有没有办法强制Android相机看到特定的东西,比如图像?
我有一个名为FakeGPS的应用程序,基本上,任何试图使用Android的GPS方法的系统都会获得我使用该应用程序设置的假坐标。
我想做同样的事情,除了相机。
使用相机的任何应用都会获得我放入的图像。
答案 0 :(得分:6)
答案 1 :(得分:1)
正如@dmarcato所说 - 如果你想用相机操作任何与每个相机应用程序相关的东西 - 唯一的方法就是以某种方式改变android的原生源代码 - 只有在编译包含这个的android OS图像时才能做到这一点变化。
因此,如果您不打算向您的每个用户提供自定义操作系统固件(对于您要支持的每个设备 - 它是包含特定二进制驱动程序的不同图像..),您可以忘记这一点。
如果这还不够,还有一个问题是本机核心摄像头代码不一定是Android代码,而是供应商特定代码,可能在每个设备上完全不同。这意味着您可能需要为每个设备映像实现不同的“hack”以使其正常工作。
答案 2 :(得分:0)
目前还不清楚你想说什么。我想你想强制设置一些应用程序用于特定的文件或内容类型。从代码中设置默认应用程序是不可能的。只有用户可以为特定操作或内容类型选择默认应用程序。
但是你仍然可以运行特定的系统应用程序,但只能从您的应用程序运行,例如启动任何系统摄像头,无论手机制造商是谁:
Intent systemCamera = null;
PackageManager pm = getPackageManager();
List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);
for(ApplicationInfo packageInfo:packages){
Intent i = pm.getLaunchIntentForPackage(packageInfo.packageName);
if(i != null && i.getAction().equals(MediaStore.ACTION_IMAGE_CAPTURE)){
if((packageInfo.flags & ApplicationInfo.FLAG_SYSTEM)!= 0){ //check if system app
systemCamera = i;
break;
}
}
}
startActivityForResult(systemCamera, MY_POSITIVE_INTEGER_REQUEST_CODE);
答案 3 :(得分:0)
我让这个在root设备上工作。您可以使用xposed http://repo.xposed.info/module/de.robv.android.xposed.installer之类的东西来修改普通应用程序用来抓取相机图像的方法。这对记录或系统本机应用程序的想法不起作用。 你需要其他工具。如果你想在全局和相机源上做到这一点,你可能需要构建自己的android内核。但那也不是那么难。问题在于您必须为每个设备和固件版本构建另一个内核。
答案 4 :(得分:-2)
乍一看,你想要做的事似乎是不道德的。
除非您愿意修改内核或系统库,否则也是不可能的。