Android调用系统拍照的代码:
创建Intent Intent openCameraIntent = new Intent(MediaStoreACTION_IMAGE_CAPTURE);
String imagePath = EnvironmentgetExternalStorageDirectory() + "/image" ;
设置文件路径 File file = new File(imagePath);
if(!fileexists()){
filemkdirs(); }
设置URI,指定相册拍照后保存的路径,Uri imageUri = UrifromFile(new File(imagePath, "imagejsp"));
openCameraIntentputExtra(MediaStoreEXTRA_OUTPUT, imageUri);
startActivityForResult(openCameraIntent, REQUEST_CODE_TAKING_PICTURES);
拍照完以后,文件就会保存在这个指定的目录下了。Uri 里指定了相机拍照的路径。
android手机有自带的照相机和图库,我们做的项目中有时用到上传到服务器,今天做了一个项目用到这个功能,所以把我的代码记录下来和大家分享,有需求的朋友可以参考下
android手机有自带的照相机和图库,我们做的项目中有时用到上传到服务器,今天做了一个项目用到这个功能,所以把我的代码记录下来和大家分享,第一次写博客希望各位大神多多批评。
首先上一段调用android相册和相机的代码:
复制代码
代码如下:
Intent intent = new
Intent(MediaStoreACTION_IMAGE_CAPTURE);//调用android自带的照相机
photoUri =
MediaStoreImagesMediaEXTERNAL_CONTENT_URI;
startActivityForResult(intent,
1);
复制代码
代码如下:
Intent i = new Intent(IntentACTION_PICK,
androidproviderMediaStoreImagesMediaEXTERNAL_CONTENT_URI);//调用android的图库
startActivityForResult(i, 2);
复制代码
代码如下:
@Override
protected void
onActivityResult(int requestCode, int resultCode, Intent data) {
//完成照相后回调用此方法
superonActivityResult(requestCode, resultCode, data);
case 1:
switch (resultCode) {
case ActivityRESULT_OK://照相完成点击确定
String sdStatus = EnvironmentgetExternalStorageState();
if
(!sdStatusequals(EnvironmentMEDIA_MOUNTED)) { // 检测sd是否可用
Logv("TestFile", "SD card is not avaiable/writeable right now");
return; }
Bundle bundle = datagetExtras();
Bitmap bitmap = (Bitmap)
bundleget("data");// 获取相机返回的数据,并转换为Bitmap格式
FileOutputStream b = null;
File file = new File("/sdcard/pk4fun/");
filemkdirs();//
创建文件夹,名称为pk4fun //
照片的命名,目标文件夹下,以当前时间数字串为名称,即可确保每张照片名称不相同。网上流传的其他Demo这里的照片名称都写死了,则会发生无论拍照多少张,后一张总会把前一张照片覆盖。细心的同学还可以设置这个字符串,比如加上“IMG”字样等;然后就会发现sd卡中myimage这个文件夹下,会保存刚刚调用相机拍出来的照片,照片名称不会重复。
String str = null;
Date date = null;
SimpleDateFormat format = new
SimpleDateFormat("yyyyMMddHHmmss");// 获取当前时间,进一步转化为字符串
date = new
Date(resultCode);
str = formatformat(date);
String fileName =
"/sdcard/myImage/" + str + "jpg";
sendBroadcast(fileName);
try {
b
= new FileOutputStream(fileName);
bitmapcompress(BitmapCompressFormatJPEG, 100, b);// 把数据写入文件
} catch
(FileNotFoundException e) {
eprintStackTrace();
} finally {
try {
bflush();
bclose();
} catch (IOException e) {
eprintStackTrace();
}
} break;
case ActivityRESULT_CANCELED://
取消
break;
}
break;
case 2:
switch (resultCode) {
case
ActivityRESULT_OK: {
Uri uri = datagetData();
Cursor cursor =
mActivitygetContentResolver()query(uri, null,
null, null, null);
cursormoveToFirst();
String imgNo = cursorgetString(0); // 编号
String imgPath = cursorgetString(1); // 文件路径
String imgSize =
cursorgetString(2); // 大小
String imgName = cursorgetString(3); // 文件名
cursorclose();
// Options options = new BitmapFactoryOptions();
//
optionsinJustDecodeBounds = false;
// optionsinSampleSize = 10;
//
Bitmap bitmap = BitmapFactorydecodeFile(imgPath, options);
}
break;
case ActivityRESULT_CANCELED:// 取消
break;
}
break;
}
当然可以,这个只需要获取到系统的相机权限就可以。获取到相机权限后,可以进行拍照等 *** 作,相对来说,iOS比安卓更安全,权限管理方面做得更好。
最常见的就是手机上的人脸识别了,目前为止,安卓只有三星和华为的部分手机在使用3D结构光技术,iOS当然只有Apple自己了,iOS也是最早在手机上使用的手机厂商,到目前为止,仍然是做得最好的。
3D结构光不需要借助摄像头就能解锁,而非3D结构光的人脸识别技术则几乎需要摄像头进行人脸识别,说白了就是需要打开你的相机才能解锁,安全性自然比较低。
如果手机中毒或是被病毒入侵并且获得相机权限,网络权限,存储权限,那么就可以达到远程监控的目的,通常手机上的远程直播软件或是远程视频监控软件都是这么做的,只不过正常的软件,在使用摄像头的时候,会让你知情,会在你的屏幕上显示摄像头所拍摄到的实时画面,但有的不会,为了效率和美观就可以隐藏了,比如支付宝的人脸识别,在你解锁失败的时候他就会显示实时画面窗口。
如果按照最坏的想法,且不论是真正的黑客或者是某些图谋不轨的个人,手机被植入病毒权限被控后,别说打开摄像头了,你的手机所有资料都可以被暴露出来
关于权限,我以华为为例,我们最常见的是地理位置,也就是GPS 或北斗也好。相机权限,存储权限,安装权限,网络权限,通讯录,麦克风,电话,日历,后台自启管理等等,安卓手机品牌众多,不同手机厂商对于权限的描述不尽相同,有的会细分,有的则不会。和苹果有所不同的是,苹果的相机和相册权限是分开的,而华为的相册权限就是存储权限,这里安卓大部分都一样。
iOS和安卓的权限管理机制不一样,当然了这也是符合安卓一贯开放的的态度相吻合。
我平时用iOS比较多,安卓虽然作为备用机,但也是没离开过。据说安卓12的权限管理会有所更新,我想可以期待一下
最后呢,要提醒一下,不论是安卓手机还是windows电脑,不论是获取摄像头还是其他权限,大部分都是从软件层面上就做得到的,所以对于来自非正规渠道来源的app要谨慎安装,链接要谨慎点击,如果安装了不确定安全的软件,切记在谨慎授权,比如位置,相册和通讯录等等敏感权限。在非必要条件下,即使是来自所谓正规官方的app,我仍然建议你在非必要的情况下,优先不给予任何权限,记住,我说的是非必要情况下,举个例子,你下载了某个需要美颜的相机app,你你不授予相机权限肯定没办法用,在安卓上应该是直接闪退了。在iOS则可以打开只是会提醒需要权限。但是如果你下载的是一个网络视频播放器app,却要求你授予通讯录权限,相机权限,这些非必要的权限就不必授予。
以上就是关于一个关于android的问题,我通过下面的方法调用相机,可是怎么可以在拍照结束后获取照片的路径呢全部的内容,包括:一个关于android的问题,我通过下面的方法调用相机,可是怎么可以在拍照结束后获取照片的路径呢、Android调用照相机和百度地图开发,百度地图显示界面覆盖了相机界面,求大神解答、如何获得他人手机前置摄像头实时等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)