一个关于android的问题,我通过下面的方法调用相机,可是怎么可以在拍照结束后获取照片的路径呢

一个关于android的问题,我通过下面的方法调用相机,可是怎么可以在拍照结束后获取照片的路径呢,第1张

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调用照相机和百度地图开发,百度地图显示界面覆盖了相机界面,求大神解答、如何获得他人手机前置摄像头实时等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9647660.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存