Android相机意图永远不会返回应用

时间:2014-08-20 10:16:43

标签: android android-intent android-camera android-camera-intent

我有一个非常令人沮丧的问题。我使用Android相机意图启动摄像机并录制视频。

我的期望:当我按下停止时,我想通过onActivityResult返回我的应用活动来做一些事情,比如显示视频录制的拇指图像等。

发生了什么:当我按下停止时,屏幕会闪烁,就像回到应用程序一样,然后只是继续显示相机。我在onActivityResult中放了一个日志,它从来没有回到这里!请注意,这不是intent数据== null的问题。这是一个永远不会调用该方法的问题。当我查看我的媒体目录时,视频文件实际上已存在,因此录制确实发生并将文件存储在那里。

我在做什么:     我通过点击我的活动中的按钮来调用相机意图:

public class MainActivity extends Activity {

  public void startVideo(){
    //set the path
    String fileName = "MyVid_" + new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()) + ".mp4";
    File externalFile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES), fileName);
    Uri videoUri = Uri.fromFile(externalFile)

    //setup up the video intent
    Intent takeVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
    takeVideoIntent.putExtra(MediaStore.EXTRA_OUTPUT, videoUri);
    takeVideoIntent.putExtra(MediaStore.EXTRA_SIZE_LIMIT, maxStorage); //set the max file size - variable calculated elsewhere
    takeVideoIntent.putExtra(MediaStore.EXTRA_SCREEN_ORIENTATION,   Configuration.ORIENTATION_LANDSCAPE); //set the camera orientation
    takeVideoIntent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, CamcorderProfile.QUALITY_480P); //set the camera resolution
    takeVideoIntent.putExtra(MediaStore.EXTRA_SHOW_ACTION_ICONS, true); //set the camera btns

    //start the intent
    if (takeVideoIntent.resolveActivity(getPackageManager()) != null) {
        startActivityForResult(takeVideoIntent, VIDEO_INTENT);
    }
  }

  //then i have the onActivtyResult - this part is never called, regardless of whether data is null or not
  @Override
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
      Log.d("***1 LOG onActivityResult - requestCode: ", String.valueOf(requestCode));
  }

}

我的权限如下:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-feature android:name="android.hardware.camera" android:required="true" />

我启动意图的活动在清单中被声明为纵向视图,尽管相机意图在代码中设置为横向,如前所示:

<activity
        android:theme="@style/AppTheme"
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:screenOrientation="portrait">
</activity>

我正在为类似魅力的静态照片做类似的事情。此代码在模拟器上也可正常工作,但在我的设备(Galaxy S3)上进行测试时,它会出现此行为,仅适用于视频。我已经搜索了高低的解决方案,但无法找到任何东西,任何建议,指针或链接将不胜感激!!

2 个答案:

答案 0 :(得分:0)

如果你从Fragment中调用它来覆盖Fragment中的Fragment.onActivityResult(),否则你应该从Activity.onActivityResult()中得到它。出于调试目的,将日志添加到两者。

在活动中,不要忘记调用super.onActivityResult(),否则它可能会压掉片段中的那个。

答案 1 :(得分:0)

我认为您拍摄了照片,但没有就如何处理它提出建议。请在获取缩略图和以下选项的位置查看此文章。 http://developer.android.com/training/camera/photobasics.html