android - java.Lang.RuntimeException, setParameters 在android(4.1.1) 版本中失败

标签 android android-camera android-sdcard android-camera-intent

我开发了一个应用程序,可以在打卡时拍照。它在 Acer 选项卡上运行良好(捕获图像并保存在 sdcard 中)。现在,当我在 Samsung Galaxy (Android-4.1.1) 中运行相同的应用程序时,我的应用程序在点击打卡时出现“不幸的是应用程序已停止”。我的代码就在这里..

// ClockIn functionality
clockin_btn.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {       
        clockin_btn.setEnabled(false);
        camera.stopPreview();
        capturePhoto(0);
      // showing one error here in log cat
        previewing = false;         
        clockin_label.setText(String.format(session_msg,logout_seconds));   
        ticker.setBase(SystemClock.elapsedRealtime()); 
        ticker.start();
    }       
});

private String capturePhoto(int clockInOutMode) {

    final int mode = clockInOutMode;
    img_file = String.format("%d.jpg", System.currentTimeMillis());

    Camera.PictureCallback mCall = new Camera.PictureCallback() {               

        public void onPictureTaken(byte[] data, Camera camera) {

            try {    

                Bitmap mBitmap = BitmapFactory.decodeByteArray(data, 0, data.length);           
                File file = new File(Constants.EMP_IMG_LOCATION, img_file);           
                FileOutputStream fOut = new FileOutputStream(file);                    
                mBitmap.compress(Bitmap.CompressFormat.JPEG, 80, fOut);               
                fOut.flush();               
                fOut.close();

                if ( mode == 0) {
                    clockIn(img_file);
                } else {
                    clockOut(img_file);
                }

            } catch (FileNotFoundException e) {
                e.printStackTrace();

            } catch (IOException e) {        
                e.printStackTrace();

            } 
        }   

    };  

    Camera.Parameters cameraParams = camera.getParameters();
    List<Camera.Size> sizes = cameraParams.getSupportedPictureSizes();
    Camera.Size result = null;
    for (int i=0;i<sizes.size();i++){
        result = (Size) sizes.get(i);
        Log.i("PictureSize", "Supported Size.Width: " + result.width + "height: " +result.height);         
    }

    cameraParams.setPictureSize(640, 480);
    camera.setParameters(cameraParams);
            System.gc();
    camera.setPreviewCallback(null);
    camera.takePicture(null, null, mCall);

       // showing one error here in logcat

    return img_file;
}

我的 Logcat 显示为:

03-27 04:52:19.273: E/AndroidRuntime(4105): FATAL EXCEPTION: main
03-27 04:52:19.273: E/AndroidRuntime(4105): java.lang.RuntimeException: setParameters failed
03-27 04:52:19.273: E/AndroidRuntime(4105):     at android.hardware.Camera.native_setParameters(Native Method)
03-27 04:52:19.273: E/AndroidRuntime(4105):     at android.hardware.Camera.setParameters(Camera.java:1452)

和我的 android.manifest.xml 文件:

     <uses-feature android:name="android.hardware.camera" />
 <uses-feature android:name="android.hardware.camera.autofocus" />
 <used-feature android:name="android.hardware.location" />
 <used-feature android:name="android.hardware.camera.setParameters" />

最佳答案

调用takePicture方法之前先调用startPreview方法 camera.takePicture(null, null, mCall); 我用的startPreview方法是

private void startPreview() {
        if (cameraConfigured && camera!=null) {
          camera.startPreview();
          inPreview=true;
        }
      }

通过这个我解决了我的问题......它可能对你们有帮助。

关于android - java.Lang.RuntimeException, setParameters 在android(4.1.1) 版本中失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15652249/

相关文章:

android - 如何为每个 android 的生命周期放置正确的代码?

android - 如何使用原生 Android Camera App 读取条码/二维码(无 ZXing)?

android - Android 中的 getSupportedPreviewSizes 和 getSupportedPictureSizes 有什么区别?

java - 尝试在空对象引用上调用虚拟方法 'android.view.SurfaceHolder android.view.SurfaceView.getHolder()'

android - 读/写可移动SD卡(android模拟器)

java - 获取连接到 Android 设备的所有存储设备的路径列表

android - 一次构建多个构建变体 (Android Studio)

android - 在 Canvas (Android) 上绘制单个位图与多个位图的质量

java - 按下电源按钮(屏幕关闭)时,Android SQLite 数据库被锁定

android - 如何从 Android 中的视频文件路径创建视频缩略图?