高通fastcv编译出现“android.view.WindowManager$BadTokenException: Unable to add window”
最近在使用高通的FastCV,官方给出了一个Sample,可是第一次编译后出现以下错误信息:
android.view.WindowManager$BadTokenException: Unable to add window
....
差了很久都没有发现什么地方错,后来发现是官方的Sample中设定了屏幕分辨率,和我的手机不匹配
下面是官方的源代码:这是FastCVSample.java中的
- protected void updatePreferences()
- {
- // Retrieve Preferences
- SharedPreferences prefs =
- PreferenceManager.getDefaultSharedPreferences( getBaseContext() );
- // set the default camera resolution to WVGA
- mDesiredWidth = 320;
- mDesiredHeight = 240;
- // retrieves user preference to set the threshold for Fast
- // Corner Detector algorithm
- int resIndex =
- Integer.decode( prefs.getString( "camThreshold", "3" ) );
- if( resIndex < mPrefOptsFastThreshold.length )
- {
- Log.e( TAG, "Configured FastThreshold: " + resIndex );
- mPrefThreshold = mPrefOptsFastThreshold[ resIndex ];
- Log.e( TAG, "Configured Threshold: " +
- mPrefThreshold );
- }
注意我标红色的地方,如果你的手机分辨率是800*640,那就没是,可是我的手机不好,只有320*240,改过来之后就可以了。
另外,在这个类中,还有一处
- private void setupCamera()
- {
- // Now that the size is known, set up the camera parameters and begin
- // the preview.
- final Camera.Parameters parameters = mCamera.getParameters();
- parameters.setPreviewFrameRate( 30 );
- parameters.setPreviewSize( mDesiredWidth, mDesiredHeight );
- parameters.setFocusMode( Camera.Parameters.FOCUS_MODE_INFINITY );
- parameters.setWhiteBalance( Camera.Parameters.WHITE_BALANCE_FLUORESCENT );
- //mCamera.setParameters( parameters );
- mPreviewWidth = mCamera.getParameters().getPreviewSize().width;
- mPreviewHeight = mCamera.getParameters().getPreviewSize().height;
同样注意标红出,对于android2.3+的机型来说,此处是要注释掉的。