【发布时间】:2014-08-20 10:16:43
【问题描述】:
我有一个非常令人沮丧的问题。我使用 android camera intent 来启动摄像机并录制视频。
我的期望:当我按下停止时,我想通过 onActivityResult 返回我的应用活动以执行一些操作,例如显示视频录制的缩略图等。
发生了什么:当我按下停止时,屏幕会闪烁,好像返回到应用程序一样,然后只是继续显示相机。我在 onActivityResult 里面放了一个日志,它永远不会在这里回调!请注意,这不是意图数据 == 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)上进行测试时,它会给出这种行为并且仅适用于视频。我已经搜索了高低的解决方案,但找不到任何东西,任何建议、指针或链接将不胜感激!
【问题讨论】:
-
我已经找到了解决这个问题的方法,请点击链接:stackoverflow.com/a/36640559/3819836
标签: android android-intent android-camera android-camera-intent