我有一个非常令人沮丧的问题。我使用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)上进行测试时,它会出现此行为,仅适用于视频。我已经搜索了高低的解决方案,但无法找到任何东西,任何建议,指针或链接将不胜感激!!
答案 0 :(得分:0)
如果你从Fragment中调用它来覆盖Fragment中的Fragment.onActivityResult(),否则你应该从Activity.onActivityResult()中得到它。出于调试目的,将日志添加到两者。
在活动中,不要忘记调用super.onActivityResult(),否则它可能会压掉片段中的那个。
答案 1 :(得分:0)
我认为您拍摄了照片,但没有就如何处理它提出建议。请在获取缩略图和以下选项的位置查看此文章。 http://developer.android.com/training/camera/photobasics.html