高通fastcv编译出现“android.view.WindowManager$BadTokenExcep

来源:互联网 发布:qq音乐获取数据错误 编辑:程序博客网 时间:2024/06/06 00:31

高通fastcv编译出现“android.view.WindowManager$BadTokenException: Unable to add window”
最近在使用高通的FastCV,官方给出了一个Sample,可是第一次编译后出现以下错误信息:

android.view.WindowManager$BadTokenException: Unable to add window

....

差了很久都没有发现什么地方错,后来发现是官方的Sample中设定了屏幕分辨率,和我的手机不匹配

下面是官方的源代码:这是FastCVSample.java中的

 

  1.    protected void updatePreferences()
  2.    {
  3.       // Retrieve Preferences
  4.       SharedPreferences prefs = 
  5.          PreferenceManager.getDefaultSharedPreferences( getBaseContext() );
  6.       // set the default camera resolution to WVGA
  7.       mDesiredWidth = 320;
  8.       mDesiredHeight = 240;
  9.       // retrieves user preference to set the threshold for Fast
  10.       // Corner Detector algorithm 
  11.       int resIndex = 
  12.          Integer.decode( prefs.getString( "camThreshold", "3" ) );
  13.       if( resIndex < mPrefOptsFastThreshold.length )
  14.       {
  15.          Log.e( TAG, "Configured FastThreshold: " + resIndex );
  16.          mPrefThreshold = mPrefOptsFastThreshold[ resIndex ];
  17.          Log.e( TAG, "Configured Threshold: " + 
  18.                 mPrefThreshold );
  19.       }

 注意我标红色的地方,如果你的手机分辨率是800*640,那就没是,可是我的手机不好,只有320*240,改过来之后就可以了。

另外,在这个类中,还有一处

  1. private void setupCamera()
  2.    {
  3.       // Now that the size is known, set up the camera parameters and begin
  4.       // the preview.
  5.       final Camera.Parameters parameters = mCamera.getParameters();
  6.  
  7.       parameters.setPreviewFrameRate( 30 );
  8.       parameters.setPreviewSize( mDesiredWidth, mDesiredHeight );
  9.       parameters.setFocusMode( Camera.Parameters.FOCUS_MODE_INFINITY );
  10.       parameters.setWhiteBalance( Camera.Parameters.WHITE_BALANCE_FLUORESCENT );
  11.       //mCamera.setParameters( parameters );
  12.  
  13.       mPreviewWidth = mCamera.getParameters().getPreviewSize().width;
  14.       mPreviewHeight = mCamera.getParameters().getPreviewSize().height;

 同样注意标红出,对于android2.3+的机型来说,此处是要注释掉的。