Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.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
Android 在平板电脑上使用应用程序时不显示图像_Android - Fatal编程技术网

Android 在平板电脑上使用应用程序时不显示图像

Android 在平板电脑上使用应用程序时不显示图像,android,Android,我正在尝试启动一个摄像头活动,然后在用户保存照片并返回应用程序时捕获照片。这在我运行安卓2.2的手机上运行得很好,但在运行4.1.2的平板电脑上出现了NullPointerException 我看到应用程序在“onActivityResult”中得到一个NullPointerException,当我试图用传递的“数据”制作位图时(显然没有传递任何数据): logcat中的错误如下所示: 07-29 17:16:50.795: W/System.err(19517): java.lang.Null

我正在尝试启动一个摄像头活动,然后在用户保存照片并返回应用程序时捕获照片。这在我运行安卓2.2的手机上运行得很好,但在运行4.1.2的平板电脑上出现了NullPointerException

我看到应用程序在“onActivityResult”中得到一个NullPointerException,当我试图用传递的“数据”制作位图时(显然没有传递任何数据):

logcat中的错误如下所示:

07-29 17:16:50.795: W/System.err(19517): java.lang.NullPointerException
07-29 17:16:50.795: W/System.err(19517):    at     com.android.thoughtfi.UsersThoughts.onActivityResult(UsersThoughts.java:163)
07-29 17:16:50.795: W/System.err(19517):    at android.app.Activity.dispatchActivityResult(Activity.java:5391)
07-29 17:16:50.795: W/System.err(19517):    at android.app.ActivityThread.deliverResults(ActivityThread.java:3215)
07-29 17:16:50.795: W/System.err(19517):    at android.app.ActivityThread.handleSendResult(ActivityThread.java:3262)
07-29 17:16:50.795: W/System.err(19517):    at android.app.ActivityThread.access$1200(ActivityThread.java:140)
07-29 17:16:50.795: W/System.err(19517):    at     android.app.ActivityThread$H.handleMessage(ActivityThread.java:1286)
07-29 17:16:50.800: W/System.err(19517):    at android.os.Handler.dispatchMessage(Handler.java:99)
07-29 17:16:50.800: W/System.err(19517):    at android.os.Looper.loop(Looper.java:137)
07-29 17:16:50.800: W/System.err(19517):    at android.app.ActivityThread.main(ActivityThread.java:4947)
07-29 17:16:50.800: W/System.err(19517):    at java.lang.reflect.Method.invokeNative(Native Method)
为什么没有任何数据返回到应用程序的onactivityresult

编辑(有关其他信息,请参见照片按钮):

“编辑”功能似乎正常,但无论我如何在平板电脑上拍摄照片,我仍会以横向模式显示照片:

onActivityResult:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    pauseTime = System.currentTimeMillis();
    Log.i(TAG, "Camera result time pauseTime should be reset: " + pauseTime);
    Log.i(TAG, "Camera resultCode is equal to: " + resultCode + " ");

    Log.i(TAG, "The intent mCapturedImageURI was: " + mCapturedImageURI);

    Bitmap photo = null;
    if (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK) {
        if(data != null){
            photo = (Bitmap) data.getExtras().get("data");
        } else {
                try {
                    photo = MediaStore.Images.Media.getBitmap(this.getContentResolver(), mCapturedImageURI);
                } catch (FileNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }               
        }

        imageView.setImageBitmap(photo);
        String[] projection = { MediaStore.Images.Media.DATA };
        Cursor cursor = managedQuery(mCapturedImageURI, projection, null,
                null, null);
        int column_index_data = cursor
                .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        cursor.moveToFirst();
        capturedImageFilePath = cursor.getString(column_index_data);
照片按钮:

photoButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // possible option
            String fileName = "temp.jpg";
            ContentValues values = new ContentValues();
            values.put(MediaStore.Images.Media.TITLE, fileName);
            mCapturedImageURI = getContentResolver().insert(
                    MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);

            Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            intent.putExtra(MediaStore.EXTRA_OUTPUT, mCapturedImageURI);
            startActivityForResult(intent, CAMERA_REQUEST);
        }
    });
对于相机,文档状态为返回包含捕获图片的文件的路径

相关代码:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE) {
        if (resultCode == RESULT_OK) {
            Toast.makeText(this, "Image saved to: " + data.getData(), Toast.LENGTH_LONG).show();
        } else {
          // whatever
        }
    }
编辑:来自

标准意图动作,可发送至摄像头应用程序 捕获图像并返回它

调用者可以传递额外的_输出来控制此图像的位置 我会写的。如果不存在额外的_输出,则会出现一个小的 大小图像作为位图对象返回到额外字段中。这是 适用于只需要小图像的应用程序。如果 如果存在额外的_输出,则将写入完整大小的图像 额外_输出的Uri值

如果我理解了这一点,相机活动将返回:

  • 如果指定了额外的输出,则完整映像的Uri
  • 未指定额外输出时getExtras()中的缩略图。获取(“数据”)

您是否在启动相机的意图中指定了额外的_输出参数?

UsersThoughts.java文件的第163行在哪里?引发异常的地方:Bitmap photo=(Bitmap)data.getExtras().get(“data”);由于您有try-catch块,我看不出您显示的代码是如何导致应用程序崩溃的。你的问题是为什么要得到NPE?我添加了try-catch块以防止代码崩溃并看到错误。错误是由于NullPointerException引起的,是的。我不明白。我想我应该让问题标题更具体一些安卓4.0及以上版本对图像有不同的处理。参考我的答案来解决这个问题不,我没有具体说明。也许在以后的版本中,缩略图不会自动返回,所以应该使用额外的_输出。我也会这样尝试,看看它是如何工作的。实际上,我的意图中有额外的_输出参数。谢谢你的帮助,这得到了一个漂亮的答案
photoButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // possible option
            String fileName = "temp.jpg";
            ContentValues values = new ContentValues();
            values.put(MediaStore.Images.Media.TITLE, fileName);
            mCapturedImageURI = getContentResolver().insert(
                    MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);

            Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            intent.putExtra(MediaStore.EXTRA_OUTPUT, mCapturedImageURI);
            startActivityForResult(intent, CAMERA_REQUEST);
        }
    });
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE) {
        if (resultCode == RESULT_OK) {
            Toast.makeText(this, "Image saved to: " + data.getData(), Toast.LENGTH_LONG).show();
        } else {
          // whatever
        }
    }