我想在我的应用程序上添加一个按钮,以提供上传图片或捕获的选项。如何添加

时间:2019-02-23 18:34:49

标签: android

到目前为止,我是从https://developer.android.com/guide/topics/media/camera#java开始的 但是我的应用崩溃了。单击按钮,然后选择该图像,请给我一种打开android相机的方法。

public class MainActivity extends AppCompatActivity {

    private Camera mCamera;
    private CameraPreview mPreview;
    Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
    private Camera.PictureCallback mPicture = new Camera.PictureCallback() {

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

            File pictureFile = getOutputMediaFile(MEDIA_TYPE_IMAGE);
            if (pictureFile == null){
                Log.d(TAG, "Error creating media file, check storage permissions");
                return;
            }

            try {
                FileOutputStream fos = new FileOutputStream(pictureFile);
                fos.write(data);
                fos.close();
            } catch (FileNotFoundException e) {
                Log.d(TAG, "File not found: " + e.getMessage());
            } catch (IOException e) {
                Log.d(TAG, "Error accessing file: " + e.getMessage());
            }
        }
    };
}

日志消息

E/AndroidRuntime: FATAL EXCEPTION: main
                  Process: com.fauzdar.divyanshu.dora, PID: 11515
                  java.lang.NullPointerException: Attempt to invoke virtual method 'void android.hardware.Camera.takePicture(android.hardware.Camera$ShutterCallback, android.hardware.Camera$PictureCallback, android.hardware.Camera$PictureCallback)' on a null object reference
                      at com.fauzdar.divyanshu.dora.MainActivity$2.onClick(MainActivity.java:112)
                      at android.view.View.performClick(View.java:6935)
                      at android.widget.TextView.performClick(TextView.java:12738)
                      at android.view.View$PerformClick.run(View.java:26211)
                      at android.os.Handler.handleCallback(Handler.java:790)
                      at android.os.Handler.dispatchMessage(Handler.java:99)
                      at android.os.Looper.loop(Looper.java:164)
                      at android.app.ActivityThread.main(ActivityThread.java:7000)
                      at java.lang.reflect.Method.invoke(Native Method)
                      at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:441)
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408)
Application terminated.

0 个答案:

没有答案