如何检测Android手机是否具有双后置摄像头
我试过
CameraManager manager = (CameraManager) context.getSystemService(Context.CAMERA_SERVICE);
try {
for(String id: manager.getCameraIdList())
Log.e("dualtest", id);
} catch (CameraAccessException e) {
e.printStackTrace();
}
但它只给我2个0和1。
答案 0 :(得分:1)
Nishant,我在Mi A1上进行了相同的测试,发现我只有两台相机。你能找到答案吗?
import java.io.File;
import java.io.IOException;
import java.util.Map;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
// Dummy Main that loads dummy data just for illustrative purposes.
public class DummyMain
{
private static final ObjectMapper MAPPER = new ObjectMapper();
private static final String FILE_PATH = "files/data.json";
public static void main(String[] args)
throws JsonParseException,
JsonMappingException,
IOException
{
// Read in JSON. Contents can be arbitrary.
Map<String, Object> data = MAPPER.readValue(new File(FILE_PATH), Map.class);
// Runs FooModifier with dummy data
FooModifier modifier = new FooModifier();
modifier.run(data);
// Just to print output for this example
System.out.println(MAPPER.writerWithDefaultPrettyPrinter().writeValueAsString(data));
}
}
输出:
可用的相机:id:0和后方饰面= true
可用的相机:id:1,后方饰面= false
在LG双摄像头访问中也找到了this link。如果可以帮助回答如何在Mi A1上启用第二个后置摄像头,将会很有帮助
答案 1 :(得分:0)
您可以使用Camera.getCameraInfo
,如下所示。如果你使用api lvl 9
List<Integer> camID = new ArrayList<Integer>();
for(int i=0;i<Camera.getNumberOfCameras();i++){
CameraInfo cameraInfo = new CameraInfo();
Camera.getCameraInfo(i,cameraInfo);
if(cameraInfo.facing==CameraInfo.CAMERA_FACING_BACK) {
camID.add(i);
break;
}
}
如果您使用的是api lvl 21,则可以使用Camera2 api
List<String> camID = new ArrayList<String>();
CameraManager manager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
for(String cameraId:manager.getCameraIdList()){
CameraCharacteristics cameraCharacteristics = manager.getCameraCharacteristics(cameraId);
Integer facing = cameraCharacteristics.get(CameraCharacteristics.LENS_FACING);
if(facing==CameraMetadata.LENS_FACING_BACK) {
camID.add(cameraId);
break;
}
}
参考
https://developer.android.com/reference/android/hardware/camera2/CameraManager.html
答案 2 :(得分:0)
这里只是个人观点,但我不认为这是可能的(尽管我没有任何证据证明这一点)。通常,2个双摄像头本身非常不同:光圈,变焦,颜色等。它们可能不会自行运行,但在软件结合两者的输入时做得很好。但是如果处理软件非常好,你甚至不需要双摄像头设置(使用谷歌的相机应用程序,这在这方面做得很好)。总而言之,这种双摄像头的制作方式有很多种,如果单个摄像头在某些设置上工作,在其他设备上则可能完全没用。这就是为什么我相信即使背面有2个摄像头,它们也被系统视为一个摄像头。此外,考虑到Android手机制造商的数量,为了开发统一的API,很难对齐所有这些。根据制造商的不同,他们可能会为您提供一些API,只能访问一台摄像头,但这只能在他们的手机上使用,直到谷歌没有切换到双摄像头设置,我不相信那里将是一个提供此功能的API。