Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我使用的是安卓摄像头,如果我点击摄像头按钮,它会打开,但是拍照后,我的应用程序停止了吗?_Java_Android_Eclipse_Oop - Fatal编程技术网

Java 我使用的是安卓摄像头,如果我点击摄像头按钮,它会打开,但是拍照后,我的应用程序停止了吗?

Java 我使用的是安卓摄像头,如果我点击摄像头按钮,它会打开,但是拍照后,我的应用程序停止了吗?,java,android,eclipse,oop,Java,Android,Eclipse,Oop,log cat显示imageUri=getContentResolver()中的错误。此行 public void startCamera() { Log.d("TDM_CAMERA", "Starting camera on the phone..."); String fileName = "testphoto.jpg"; ContentValues values = new ContentValues(); values.put(MediaStore.Images.Med

log cat显示imageUri=getContentResolver()中的错误。此行

 public void startCamera() {
  Log.d("TDM_CAMERA", "Starting camera on the phone...");
  String fileName = "testphoto.jpg";
  ContentValues values = new ContentValues();
  values.put(MediaStore.Images.Media.TITLE, fileName);
  values.put(MediaStore.Images.Media.DESCRIPTION,
          "Image capture by camera");
  values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg");
  imageUri = getContentResolver().insert(
          MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
  Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
  intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
  intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
  startActivityForResult(intent, 1337);
}

设置输出文件的方式是可疑的

试着这样做:

02-08 07:32:11.505: E/AndroidRuntime(2136): FATAL EXCEPTION: main
02-08 07:32:11.505: E/AndroidRuntime(2136): java.lang.UnsupportedOperationException: Unknown URI: content://media/external/images/media
02-08 07:32:11.505: E/AndroidRuntime(2136):     at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:169)
02-08 07:32:11.505: E/AndroidRuntime(2136):     at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:137)
02-08 07:32:11.505: E/AndroidRuntime(2136):     at android.content.ContentProviderProxy.insert(ContentProviderNative.java:420)
02-08 07:32:11.505: E/AndroidRuntime(2136):     at android.content.ContentResolver.insert(ContentResolver.java:866)
02-08 07:32:11.505: E/AndroidRuntime(2136):     at com.Ibetter.tdm.ReqEditActivity.startCamera(ReqEditActivity.java:597)
02-08 07:32:11.505: E/AndroidRuntime(2136):     at com.Ibetter.tdm.ReqEditActivity$4.onClick(ReqEditActivity.java:107)
02-08 07:32:11.505: E/AndroidRuntime(2136):     at android.view.View.performClick(View.java:4202)
02-08 07:32:11.505: E/AndroidRuntime(2136):     at android.view.View$PerformClick.run(View.java:17340)
02-08 07:32:11.505: E/AndroidRuntime(2136):     at android.os.Handler.handleCallback(Handler.java:725)
02-08 07:32:11.505: E/AndroidRuntime(2136):     at android.os.Handler.dispatchMessage(Handler.java:92)
02-08 07:32:11.505: E/AndroidRuntime(2136):     at android.os.Looper.loop(Looper.java:137)
02-08 07:32:11.505: E/AndroidRuntime(2136):     at android.app.ActivityThread.main(ActivityThread.java:5039)
02-08 07:32:11.505: E/AndroidRuntime(2136):     at java.lang.reflect.Method.invokeNative(Native Method)
02-08 07:32:11.505: E/AndroidRuntime(2136):     at java.lang.reflect.Method.invoke(Method.java:511)
02-08 07:32:11.505: E/AndroidRuntime(2136):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
02-08 07:32:11.505: E/AndroidRuntime(2136):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
02-08 07:32:11.505: E/AndroidRuntime(2136):     at dalvik.system.NativeStart.main(Native Method)
02-08 07:32:13.935: I/Process(2136): Sending signal. PID: 2136 SIG: 9
02-08 07:32:14.835: E/Trace(2175): error opening trace file: No such file or directory (2)
02-08 07:32:14.835: W/Trace(2175): Unexpected value from nativeGetEnabledTags: 0
还要确保在Android清单中声明使用外部存储:

public void startCamera() throws IOException {
  Log.d("TDM_CAMERA", "Starting camera on the phone...");
  File photosDir = new File(Environment.getExternalStorageDirectory(), "photos");
  if (!photosDir.isDirectory()) {
      photosDir.mkdirs();
  }
  File imageFile = File.createTempFile("testphoto", ".jpg", photosDir);
  Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
  intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(imageFile));
  intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
  startActivityForResult(intent, 1337);
}

有关更多信息,请参阅文档中的此页: 我敢打赌

编辑: 您可以在活动中使用以下代码访问它:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

@PaNaVTEC.我没有得到您的答案,日志显示了那一行的错误imageUri=getContentResolver().insert(MediaStore.Images.Media.EXTERNAL\u CONTENT\u URI,values);您是否已将清单设置为访问SD卡?@dinesh707。您能告诉我如何访问SD卡吗?这是我的mainfest.xml\n我没有收到answer@janos-我也使用了你的代码,但是在捕获图像后,我的应用程序停止了,在这个链接有一个完整的@janosOk之前我提到的logcat中显示的问题,所以现在的问题是我们传递到
Uri.fromFile
的URL。请按照我在回答中写的方式尝试,使用
Environment.getExternalStorageDirectory()
而不是像我前面建议的那样使用
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY\u PICTURES)
。我已经更改了回答中的代码。如果使用更改的代码更新程序,则程序将正常工作,或者logcat中的错误消息将不同。请尝试一下,如果您仍然有问题,请将新的错误消息粘贴到logcat.ya上。它工作正常,谢谢,是否仅保存在SD卡中?如何在活动页面上显示该图像?如何在我的代码中保存SD卡中的图像。请告诉我如何做?我还有一个疑问,这是否可能在拍照后在同一页中显示图像,并且图像必须在该页中显示。如何显示?是的,使用此代码:我要将您的代码与该代码一起使用吗?两者都有所不同,它们没有设置任何像getImageUri()这样的调用函数。我如何编写?我想用该代码添加您的代码,或者我想单独使用该代码就可以了
@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.capture);

    Button capture = (Button) findViewById(R.id.capture_button);
    capture.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            // We use the stock camera app to take a photo
            Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            intent.putExtra(MediaStore.EXTRA_OUTPUT, getImageUri());
            startActivityForResult(intent, TAKE_PHOTO_CODE);
        }
    });
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == TAKE_PHOTO_CODE && resultCode == RESULT_OK) {
        Uri imagePath = getImageUri();

        doSomething();
    }
}

/**
 * Get the uri of the captured file
 * @return A Uri which path is the path of an image file, stored on the dcim folder
 */
private Uri getImageUri() {
    // Store image in dcim
    File file = new File(Environment.getExternalStorageDirectory() + "/DCIM", CAPTURE_TITLE);
    Uri imgUri = Uri.fromFile(file);

    return imgUri;
}