有必要创建一个相机把它放在一个片段(android)?

时间:2015-08-20 20:20:22

标签: android camera fragment

我只需要将相机放在我主要活动的三个片段之一中,如([f] - [f] - [C]),其中()是我的主要活动,[]是片段, C是相机,f只是一个片段(它们是全屏可切换的)。我需要为它创建一个完整的相机(编码等),或者可以调用Android本机相机应用程序,意图是一个想法?

3 个答案:

答案 0 :(得分:1)

  

我需要为它创建一个完整的相机(编码等)

是的,无论您是自己编写还是使用库中的文件。

  

或者可以调用Android本机相机应用程序,意图是一个想法?

不,您无法在应用的片段中嵌入第三方应用。

答案 1 :(得分:0)

您可以使用Intent启动camara,它将启动camara默认应用程序。只需要小心检测何时显示“C”片段,此处:How to determine when Fragment becomes visible in ViewPager

如果你不这样做,android会在显示片段之前预先缓存片段,你的意图将会触发。

关于您的活动使用:

@Override public void onResume() {
    super.onResume();
    if(viewPager.getCurrentItem() == 2){
        //Your code here. Executed when fragment is seen by user.
        // create Intent to take a picture and return control to the calling  application 
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

        fileUri = getOutputMediaFileUri(MEDIA_TYPE_IMAGE); // create a file to save the image
        intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri); // set the image file name

        // start the image capture Intent 
        startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);
    }
 }

使用意图选项查看相机启动:http://developer.android.com/guide/topics/media/camera.html#intent-image

答案 2 :(得分:0)

如果您需要拍照,可以使用意图来启动系统相机应用。这样做会使代码变得更容易,但是您无法显示实时预览,因为您实际上是通过该意图对相机应用程序进行控制。

手动处理整个相机生命周期可让您控制预览并在应用中实时显示。此外,如果您需要在您的应用中进行实时预览,这是一种可行的方式,只需使用Intent即可完成。

您可能会发现GitHub上的UltimateAndroidCameraGuide对您的问题非常有帮助,尤其是该回购邮件中的SimpleCameraIntentFragmentNativeCameraFragment文件。