Java 如何管理android手机的硬件

Java 如何管理android手机的硬件,java,android,Java,Android,我使用的是Android模拟器和开发平台 我已经创建了一个新的应用程序,想知道如何关闭或打开Android手机摄像头?当您为模拟器创建AVD时,有启用前后摄像头的选项。如果已为emulator启用此选项,则可以像在普通手机上一样访问摄像头(使用摄像头应用程序或通过系统) 如果您没有看到仿真程序图像,则可能没有在仿真程序图像上启用摄像头选项。为仿真程序创建AVD时,有用于启用前后摄像头的选项。如果已为emulator启用此选项,则可以像在普通手机上一样访问摄像头(使用摄像头应用程序或通过系统) 如

我使用的是Android模拟器和开发平台


我已经创建了一个新的应用程序,想知道如何关闭或打开Android手机摄像头?

当您为模拟器创建AVD时,有启用前后摄像头的选项。如果已为emulator启用此选项,则可以像在普通手机上一样访问摄像头(使用摄像头应用程序或通过系统)


如果您没有看到仿真程序图像,则可能没有在仿真程序图像上启用摄像头选项。

为仿真程序创建AVD时,有用于启用前后摄像头的选项。如果已为emulator启用此选项,则可以像在普通手机上一样访问摄像头(使用摄像头应用程序或通过系统)


如果你看不到模拟器图像,你可能没有在模拟器图像上启用摄像头选项。

如果你要从应用程序打开它,你应该使用摄像头

Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
intent.putExtra("android.intent.extras.CAMERA_FACING", 1);
startActivityForResult(intent, 1);
编辑:


1-用于前置摄像头

如果您要从应用程序中打开它,则应使用摄像头意图

Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
intent.putExtra("android.intent.extras.CAMERA_FACING", 1);
startActivityForResult(intent, 1);
编辑:


1-用于前置摄像头

我假设您已在模拟器上启用摄像头,并且希望自己访问其功能,而不是打开现有的摄像头应用程序。你需要使用Android中的功能才能真正访问这个硬件,你还需要授予应用程序使用它的权限

private void startCamera(){ //First check if a camera is available if(getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA)){ Log.d("CameraApp", "It has a camera"); Camera cam = Camera.open(); //Start using the camera. From here on out you should be able to access it's functions. cam.unlock(); cam.startPreview(); } else { Log.d("CameraApp", "It does not have a camera"); Toast.makeText(this, "No camera available", Toast.LENGTH_SHORT).show(); } } 私有void startCamera(){ //首先检查摄像机是否可用 如果(getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA)){ Log.d(“CameraApp”,“它有一个摄像头”); Camera cam=Camera.open();//开始使用摄像头。从现在开始,您应该能够访问它的功能。 cam.unlock(); cam.startPreview(); }否则{ Log.d(“CameraApp”,“它没有摄像头”); Toast.makeText(这个“没有可用的摄像头”, 吐司。长度(短)。show(); } } 完成后一定要把它关上

private void stopCamera(){ cam.stopPreview(); cam.release(); } 私人void stopCamera(){ cam.stopPreview(); 凸轮释放(); } 将此添加到您的AndroidManifest.xml以授予您的应用程序权限:

<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />

每个功能(缩放、自动对焦等)都需要自己的权限才能添加


有关更多信息,请参见此部分:

我假设您在模拟器上启用了摄像头,并且希望自己访问其功能,而不是打开现有的摄像头应用程序。你需要使用Android中的功能才能真正访问这个硬件,你还需要授予应用程序使用它的权限

private void startCamera(){ //First check if a camera is available if(getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA)){ Log.d("CameraApp", "It has a camera"); Camera cam = Camera.open(); //Start using the camera. From here on out you should be able to access it's functions. cam.unlock(); cam.startPreview(); } else { Log.d("CameraApp", "It does not have a camera"); Toast.makeText(this, "No camera available", Toast.LENGTH_SHORT).show(); } } 私有void startCamera(){ //首先检查摄像机是否可用 如果(getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA)){ Log.d(“CameraApp”,“它有一个摄像头”); Camera cam=Camera.open();//开始使用摄像头。从现在开始,您应该能够访问它的功能。 cam.unlock(); cam.startPreview(); }否则{ Log.d(“CameraApp”,“它没有摄像头”); Toast.makeText(这个“没有可用的摄像头”, 吐司。长度(短)。show(); } } 完成后一定要把它关上

private void stopCamera(){ cam.stopPreview(); cam.release(); } 私人void stopCamera(){ cam.stopPreview(); 凸轮释放(); } 将此添加到您的AndroidManifest.xml以授予您的应用程序权限:

<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />

每个功能(缩放、自动对焦等)都需要自己的权限才能添加


有关更多信息,请参见此内容:

如果手机有两个摄像头,我如何区分?@coler'e我不确定您的SDK版本是什么,但有一个“黑客”问题。检查更新的答案…eestein,我有点困惑。这与这个问题无关。使用Java服务,我应该编写android控制管理器。我不明白Java和Android之间的关系。您上面的代码是Java还是其他什么?或者,Android应用程序是用Java语言编写的吗?我有点困惑?@coler'e Android应用程序是基于Java的。你可以使用其他工具,如mono或flex,但Android应用程序是基于java的。我应该吃一些特别是基于糖的东西。如果手机有两个摄像头,我怎么能区分呢?@coler'e我不确定你的SDK版本是什么,但这是一个“黑客”问题。检查更新的答案…eestein,我有点困惑。这与这个问题无关。使用Java服务,我应该编写android控制管理器。我不明白Java和Android之间的关系。您上面的代码是Java还是其他什么?或者,Android应用程序是用Java语言编写的吗?我有点困惑?@coler'e Android应用程序是基于Java的。你可以使用其他工具,如mono或flex,但Android应用程序是基于java的。我应该吃一些特别是基于糖的东西。我知道你有一个摄像头类。但是,在camera.open()方法中,您编写了什么?camera类随Android一起提供<代码>导入android.hardware.Camera。这个类的文档在我提供的链接中。请记住,我写的是非常基本的。我建议主要使用文档。每个示例中,我忽略了在示例中创建一个
SurfaceHolder
。我知道您有一个camera类。但是,在camera.open()方法中,您编写了什么?camera类随Android一起提供<代码>导入android.hardware.Camera。这个类的文档在我提供的链接中。请记住,我写的是非常基本的。我建议主要使用文档。每个示例中,我都忽略了在示例中创建
SurfaceHolder