5

我遵循的教程有一个小问题。我想制作一个带有相机预览的android应用程序,但直到现在我还没有找到任何好的教程来展示如何做到这一点。这是链接教程 如果我可以使用“相机预览”的“有意图的相机”,我不太确定?我该怎么办。

谢谢 :)

4

3 回答 3

17

下面的教程会帮助你。

http://www.vogella.com/articles/AndroidCamera/article.html

http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/CameraPreview.html

调用内置相机意图以获取图片。

public class demo extends Activity {

Button ButtonClick;
int CAMERA_PIC_REQUEST = 1337; 


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    ButtonClick =(Button) findViewById(R.id.Camera);
    ButtonClick.setOnClickListener(new OnClickListener (){
        @Override
        public void onClick(View view)
        {
            Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
            // request code

            startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST);

        }
    });

}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{
    if( requestCode == 1337)
    {
    //  data.getExtras()
        Bitmap thumbnail = (Bitmap) data.getExtras().get("data");

          Now you have received the bitmap..you can pass that bitmap to other activity
          and play with it in this activity or pass this bitmap to other activity
          and then upload it to server.
    }
    else 
    {
        Toast.makeText(demo.this, "Picture NOt taken", Toast.LENGTH_LONG);
    }
    super.onActivityResult(requestCode, resultCode, data);
}
}
于 2012-06-05T12:06:52.800 回答
4

我目前正在开发CameraPreviewSample项目的一个分支。这个例子的好处是 github 源代码被标记为使相机预览工作所需的几个步骤。

因此,如果您正在研究在多个标签上运行(查看自述文件了解详细信息)可能是一个好主意。

另一个很好的资源是来自 Google 的培训文章。对于摄像头,最好阅读有关摄像头控制的 Android 培训文章

于 2014-04-10T14:06:23.370 回答
2

不推荐直接使用SurfaceViewor TextureView,而是使用PreviewView。

作为PreviewViewCameraX Jetpack 库的一部分,通过在各种 Android 设备上提供对开发人员友好、一致且稳定的 API,开发人员可以更轻松地显示相机预览。

在 xml

<androidx.camera.view.PreviewView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:scaleType="fitCenter" />

在您的代码中,

// Create a preview use case instance
val preview = Preview.Builder().build()

//camera selector
val cameraSelector : CameraSelector = CameraSelector.Builder()
      .requireLensFacing(CameraSelector.LENS_FACING_BACK)
      .build()


// Bind the preview use case and other needed user cases to a lifecycle
val camera = cameraProvider.bindToLifecycle(this as LifecycleOwner, cameraSelector, preview)

// Create a surfaceProvider using the bound camera's cameraInfo
val surfaceProvider = previewView.createSurfaceProvider(camera.cameraInfo)

// Attach the surfaceProvider to the preview use case to start preview
preview.setSurfaceProvider(surfaceProvider)

请参阅此处的完整文档。

于 2020-04-29T06:47:33.770 回答