麦子学院Android开发教程拍照保存系统相册不显示照片问题

合集下载

android中打开相机、打开相册进行图片的获取示例

android中打开相机、打开相册进行图片的获取示例

android中打开相机、打开相册进⾏图⽚的获取⽰例这⾥介绍在Android中实现相机调取、拍照⽚、获取照⽚、存储新路径等已经打开相册、选择照⽚等功能⾸先看⼀下界⾯,很简单配置读取内存卡和调⽤照相头的功能<!-- 使⽤⽹络权限 --><uses-permission android:name="android.permission.INTERNET"/><!-- 写sd卡的权限 --><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><!-- 读sd卡权限 --><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />下⾯是代码的主题public class TakePhotos extends Activity implementsandroid.view.View.OnClickListener {Button takePhoto;Bitmap photo;String picPath;Button capture;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(yout.activity_photo);takePhoto = (Button) findViewById(R.id.button1);capture = (Button) findViewById(R.id.capture);takePhoto.setOnClickListener(this);capture.setOnClickListener(this);}@Overridepublic void onClick(View viewid) {switch (viewid.getId()) {case R.id.button1: {// 打开相机String state = Environment.getExternalStorageState();// 获取内存卡可⽤状态if (state.equals(Environment.MEDIA_MOUNTED)) {// 内存卡状态可⽤Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");startActivityForResult(intent, 1);} else {// 不可⽤Toast.makeText(TakePhotos.this, "内存不可⽤", Toast.LENGTH_LONG).show();}break;}case R.id.capture: {// 打开相册// 打开本地相册Intent i = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);// 设定结果返回startActivityForResult(i, 2);break;}default:break;}}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {// TODO Auto-generated method stubsuper.onActivityResult(requestCode, resultCode, data);if (data != null) {switch (requestCode) {// 两种⽅式获取拍好的图⽚if (data.getData() != null || data.getExtras() != null) { // 防⽌没有返回结果Uri uri = data.getData();if (uri != null) {this.photo = BitmapFactory.decodeFile(uri.getPath()); // 拿到图⽚}if (photo == null) {Bundle bundle = data.getExtras();if (bundle != null) {photo = (Bitmap) bundle.get("data");FileOutputStream fileOutputStream = null;try {// 获取 SD 卡根⽬录⽣成图⽚并String saveDir = Environment.getExternalStorageDirectory()+ "/dhj_Photos";// 新建⽬录File dir = new File(saveDir);if (!dir.exists())dir.mkdir();// ⽣成⽂件名SimpleDateFormat t = new SimpleDateFormat( "yyyyMMddssSSS");String filename = "MT" + (t.format(new Date()))+ ".jpg";// 新建⽂件File file = new File(saveDir, filename);// 打开⽂件输出流fileOutputStream = new FileOutputStream(file);// ⽣成图⽚⽂件press(pressFormat.JPEG,100, fileOutputStream);// 相⽚的完整路径this.picPath = file.getPath();ImageView imageView = (ImageView) findViewById(R.id.imageView1); imageView.setImageBitmap(this.photo);} catch (Exception e) {e.printStackTrace();} finally {if (fileOutputStream != null) {try {fileOutputStream.close();} catch (Exception e) {e.printStackTrace();}}}Toast.makeText(getApplicationContext(), "获取到了",Toast.LENGTH_SHORT).show();} else {Toast.makeText(getApplicationContext(), "找不到图⽚",Toast.LENGTH_SHORT).show();}}}break;case 2: {//打开相册并选择照⽚,这个⽅式选择单张// 获取返回的数据,这⾥是android⾃定义的Uri地址Uri selectedImage = data.getData();String[] filePathColumn = { MediaStore.Images.Media.DATA };// 获取选择照⽚的数据视图Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null);cursor.moveToFirst();// 从数据视图中获取已选择图⽚的路径int columnIndex = cursor.getColumnIndex(filePathColumn[0]);String picturePath = cursor.getString(columnIndex);cursor.close();// 将图⽚显⽰到界⾯上ImageView imageView = (ImageView) findViewById(R.id.imageView1); imageView.setImageBitmap(BitmapFactory.decodeFile(picturePath)); break;}default:}}}}注释的很详细,⾃⼰分析吧。

无法获取储存权限或相机权限的解决方法

无法获取储存权限或相机权限的解决方法

无法获取储存权限或相机权限的解决方法
1. 嘿,先看看设置里面是不是不小心给关啦!就像你出门忘记带钥匙一样,咋进家门呀,快去设置里瞧瞧,把储存权限和相机权限给它打开!比如在手机设置里找到对应的应用,确保那个小开关是开着的呀!
2. 哎呀呀,是不是系统版本太低了呀?这就好比一辆老掉牙的车,跑不快啦,去更新一下系统试试呗!像苹果手机就去软件更新那里看看呀,说不定问题就解决了呢!
3. 不会是其他程序占用了吧?这跟路上堵车似的,得疏导一下呀!把那些不必要的程序关掉一些,说不定就能给储存和相机权限腾出地方啦!比如正在运行的一些无关紧要的软件呀!
4. 你有没有试过重启手机呀?这就像人累了要休息一下,重启后可能就一切顺畅啦!好多时候重启一下,之前的问题就莫名其妙没啦!
5. 是不是这个应用出问题啦?就好像一件衣服破了个洞,得补补呀!试试把它卸载了再重新安装,也许就好啦呢!比如某个总是出问题的拍照软件呀!
6. 你想想看,是不是最近装了什么奇怪的软件影响啦?这跟在好汤里加了颗老鼠屎似的,赶紧把那些可能捣乱的软件找出来呀!说不定就是它们在作祟呢!
7. 嘿,有没有找手机客服问问呀?他们就像专家一样,肯定能给你好建议呀!就跟生病了找医生一样,问他们准没错!
8. 是不是手机中毒啦?哎呀,那可不得了,这就像人生病了一样,得治呀!用杀毒软件杀杀毒试试呢!说不定就能把问题解决啦!
9. 反正呀,多试试各种办法,总有一个能行的!就像找路一样,一条走不通就换一条呗,别灰心呀!
我的观点结论就是:遇到无法获取储存权限或相机权限不要慌,按照这些方法一个个去试,肯定能解决的!。

关于图片资源在android2.12.22.3下无法显示的问题以及解决方法

关于图片资源在android2.12.22.3下无法显示的问题以及解决方法

关于图片资源在android2.12.22.3下无法显示的问题以及解
决方法
这些天在写android应用,遇到了一件很诡异的事情:
某个图片资源作为背景被设置到layout上,在eclipse的layout 设计界面内能显示,但是启动模拟器后图片完全无法显示;我将应用打包到真机上测试,发现图片能显示!
但事实远未那么简单。

后来我将应用打包给我的几个朋友测试,发现图片又是无法显示。

其中,我的应用支持的版本是2.1,模拟器版本是2.1,我的机器版本是4.0,两个朋友的机器分别是2.1和2.3。

于是我猜想该图片在2.1和2.3上不兼容,于是单独建立一个工程,对该图进行测试,结果发现都能显示。

为什么这个图在我的应用上无法显示,在测试应用上可以显示,而且还是和版本相关。

经过一番折腾和各种假设以及实验找到了解决方法:
该图的名字是a打头,所以排在第一个,android自动产生R类资源索引,该图的索引值是0x7f040000,后面都是0有木有!我发现只要是索引是0x7f040000的图片资源,在我的应用中都是无法显示,所以我就再扔进去一张没用的图片取名叫aaa.png让它排在第一个占
用掉0x7f040000这个索引,然后,一切都正常了。

疑问:虽然问题解决了,但是为什么在测试工程中同样图片资源索引是0x7f040000也是可以显示呢?我猜想可能是我的应用中使用到了别的一些xml定义的drawable资源产生的冲突吧,也许是android的bug,但具体这个问题是如何产生的,还是没搞清楚。

麦子学院Android开发教程图片处理

麦子学院Android开发教程图片处理

在android开发中,很多地方都会使用到图标,图片按钮等,那么它是通过什么来完成的呢,下面我们来具体来讲解下。

在Android中操作图片是通过使用Drawable类来完成的。

Drawable类有很多个子类,如BitmapDrawable用来操作位图;ColorDrawable用来操作颜色;ShapeDrawable用来操作各种形状。

下例三种方法来实例化Drawable对象:一是用来保存在工程中的图片资源;而是在XML中定义Drawable属性;三是通过构造方法实例化,这种方法在实际开发中一般不会用到。

例子1:在代码中通过setImageResource()方法来设置BitmapTest01.javaJava代码1.package org.test.bitmaptest01;2.3.import android.app.Activity;4.import android.os.Bundle;5.import android.widget.ImageView;6.7.public class BitmapTest01 extends Activity {8. //声明图片视图ImageView9. private ImageView myImageView;10. @Override11. public void onCreate(Bundle savedInstanceState) {12. super.onCreate(savedInstanceState);13. setContentView(yout.main);14. myImageView = (ImageView)findViewById(R.id.ImageView01);15. //为ImageView设置图片资源16. myImageView.setImageResource(R.drawable.beau);17. }18.}复制代码main.xmlXml代码1.<?xml version="1.0" encoding="utf-8"?>2.<LinearLayoutxmlns:android="/apk/res/android"3. android:orientation="vertical"4. android:layout_width="fill_parent"5. android:layout_height="fill_parent"6. >7.<TextView8. android:layout_width="fill_parent"9. android:layout_height="wrap_content"10. android:text="测试"11. />12. <ImageView13. android:id="@+id/ImageView01"14. android:layout_width="wrap_content"15. android:layout_height="wrap_content"16. />17.</LinearLayout>复制代码运行效果如下:或者在XML中配置。

Android图片保存到相册不显示的解决方案(兼容Android10及更高版本)

Android图片保存到相册不显示的解决方案(兼容Android10及更高版本)

Android图⽚保存到相册不显⽰的解决⽅案(兼容Android10及更⾼版本)⽬录前⾔问题解决问题前⾔写了⼀个demo,简单逻辑就是:在⼀个图⽚上添加⼀⾏⽂字或者是⽔印,并且保存到系统相册,也就是我们⼿机上的图库。

前⾯编辑图⽚添加⽔印都没有问题,到后⾯保存到系统相册出现了问题:显⽰不出来图⽚。

问题在 Android 10 之前保存系统相册的三步骤:保存图⽚到⼿机把图⽚插⼊到⼿机图库发⼴播更新代码如下:public static void savePhotoAlbum(Context context, Bitmap bmp) {// ⾸先保存图⽚File appDir = new File(Environment.getExternalStorageDirectory(), "Boohee");if (!appDir.exists()) {appDir.mkdir();}String fileName = System.currentTimeMillis() + ".jpg";File file = new File(appDir, fileName);try {FileOutputStream fos = new FileOutputStream(file);press(CompressFormat.JPEG, 100, fos);fos.flush();fos.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}// 其次把⽂件插⼊到系统图库try {MediaStore.Images.Media.insertImage(context.getContentResolver(),file.getAbsolutePath(), fileName, null);} catch (FileNotFoundException e) {e.printStackTrace();}// 最后通知图库更新context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + path)));}出现的问题:图⽚不显⽰,也就是说没有更新到系统图库中。

解决手机相册无法显示照片的问题

解决手机相册无法显示照片的问题

解决手机相册无法显示照片的问题现如今,手机已经成为我们生活中必不可少的一部分。

我们通过手机记录下生活的点滴,拍摄美好的瞬间。

然而,有时候我们会遇到手机相册无法显示照片的问题,这不仅让我们感到困扰,也让我们担心照片的丢失。

那么,如何解决手机相册无法显示照片的问题呢?本文将为您提供一些解决方案。

一、检查手机相册权限设置首先,我们需要检查手机相册的权限设置。

有时候,我们在使用手机应用时可能会不小心关闭了相册的访问权限,导致手机相册无法显示照片。

我们可以按照以下步骤来检查和设置相册权限:1. 打开手机的设置菜单。

2. 找到并点击“应用管理”或者“应用程序”选项。

3. 在应用列表中找到并点击“相册”或者“图库”应用。

4. 点击“权限”选项。

5. 确保“存储”或者“相册访问”权限已经打开。

通过以上步骤,我们可以确保手机相册的权限设置正确,从而解决相册无法显示照片的问题。

二、清理手机缓存手机相册无法显示照片的另一个可能原因是手机缓存过多,导致相册加载缓慢或者无法显示照片。

清理手机缓存可以帮助解决这个问题。

以下是清理手机缓存的方法:1. 打开手机的设置菜单。

2. 找到并点击“存储”或者“存储空间”选项。

3. 在存储空间界面中,点击“缓存数据”选项。

4. 确认清理缓存数据。

清理手机缓存后,我们可以重新打开手机相册,查看是否能够显示照片。

三、检查照片格式和存储位置有时候,手机相册无法显示照片是因为照片格式不受支持或者存储位置发生了变化。

我们可以按照以下步骤来检查照片格式和存储位置:1. 打开手机相册应用。

2. 在相册界面中,找到并点击“设置”或者“选项”按钮。

3. 点击“照片格式”或者“存储位置”选项。

4. 确认照片格式为常见的JPEG或者PNG格式,并且存储位置正确。

通过检查照片格式和存储位置,我们可以解决手机相册无法显示照片的问题。

四、使用第三方相册应用如果以上方法都无法解决问题,我们可以尝试使用第三方相册应用来查看照片。

Android开发实现保存图片到手机相册功能

Android开发实现保存图片到手机相册功能

Android开发实现保存图⽚到⼿机相册功能本⽂实例讲述了Android开发实现保存图⽚到⼿机相册功能。

分享给⼤家供⼤家参考,具体如下:有⼀种很常见的需求,当保存图⽚的时候,客户需要在相册⾥⾯看到那张图⽚。

有时候确实是保存成功了(通过IO流将图⽚写⼊了SDCard),但打开相册却看不到那张图⽚,需要在⽂件管理软件上才能找到那张图⽚,在⽹上找了许多⽂章,貌似都保存不到相册那⾥,这应该就是⼿机品牌的原因,有的品牌的⼿机能显⽰在相册⾥,有的品牌的⼿机却不能。

解决这种问题,最简单粗暴的⽅法是,⽤那台⼿机拍⼀张照⽚,然后找到它,查看它的路径详情,直接根据路径⽤IO流写⼊,Android SDK 的Build.BRAND 变量为当前⼿机的品牌,根据不同的品牌来做兼容处理,如果有读者⽤了这篇⽂章的代码还是不能在相册显⽰,可以对着这个思路来做兼容。

另外值得⼀提的是,图⽚格式需要为JPEG格式才能显⽰在相册中,我们拍的照⽚也是JPEG格式的。

下⾯⽤代码来实现上述的想法。

鉴于⽬前⼿机的版本普遍为Android 6.0 以上,读写外部存储⽂件都需要动态申请权限。

这部分代码可以在当前需要读写外部存储⽂件的Activity中写。

String[] PERMISSIONS = {"android.permission.READ_EXTERNAL_STORAGE","android.permission.WRITE_EXTERNAL_STORAGE" };//检测是否有写的权限int permission = ContextCompat.checkSelfPermission(this,"android.permission.WRITE_EXTERNAL_STORAGE");if (permission != PackageManager.PERMISSION_GRANTED) {// 没有写的权限,去申请写的权限,会弹出对话框ActivityCompat.requestPermissions(this, PERMISSIONS,1);}保存⽂件的⽅法:public void SaveBitmapFromView(View view) {int w = view.getWidth();int h = view.getHeight();Bitmap bmp = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);Canvas c = new Canvas(bmp);yout(0, 0, w, h);view.draw(c);// 缩⼩图⽚Matrix matrix = new Matrix();matrix.postScale(0.5f,0.5f); //长和宽放⼤缩⼩的⽐例bmp = Bitmap.createBitmap(bmp,0,0, bmp.getWidth(),bmp.getHeight(),matrix,true);DateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");saveBitmap(bmp,format.format(new Date())+".JPEG");}/** 保存⽂件,⽂件名为当前⽇期*/Public void saveBitmap(Bitmap bitmap, String bitName){String fileName ;File file ;if(Build.BRAND .equals("Xiaomi") ){ // ⼩⽶⼿机fileName = Environment.getExternalStorageDirectory().getPath()+"/DCIM/Camera/"+bitName ;}else{ // Meizu 、OppofileName = Environment.getExternalStorageDirectory().getPath()+"/DCIM/"+bitName ;}file = new File(fileName);if(file.exists()){file.delete();}FileOutputStream out;try{out = new FileOutputStream(file);// 格式为 JPEG,照相机拍出的图⽚为JPEG格式的,PNG格式的不能显⽰在相册中if(press(pressFormat.JPEG, 90, out)){out.flush();out.close();// 插⼊图库MediaStore.Images.Media.insertImage(this.getContentResolver(), file.getAbsolutePath(), bitName, null);}}catch (FileNotFoundException e){e.printStackTrace();}catch (IOException e){e.printStackTrace();}// 发送⼴播,通知刷新图库的显⽰this.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + fileName)));}以上就是保存图⽚到相册的⽅式,代码写在Activity类中,⽽我们只要稍微封装⼀下这些代码到你的ImageUtil 或者 FileUtil那样类⾥⾯,你就可以⽅便地运⽤到你的项⽬中了,这⾥我就不封装了。

Android实现保存图片到本地并在相册中显示

Android实现保存图片到本地并在相册中显示

Android实现保存图⽚到本地并在相册中显⽰Android中拍照保存图⽚到本地是常见的⼀种需求,之前碰到了⼀个问题,就是在4.4中,刷新相册会出现ANR,经过⼀番百度解决了这个问题。

⾸先是保存图⽚到本地private static final String SAVE_PIC_PATH = Environment.getExternalStorageState().equalsIgnoreCase(Environment.MEDIA_MOUNTED) ? Environment.getExternalStorageDirectory().getAbsolutePath() : "/mnt/sdcard";//保存到SD卡private static final String SAVE_REAL_PATH = SAVE_PIC_PATH + "/good/savePic";//保存的确切位置,根据⾃⼰的具体需要来修改public void saveFile(Bitmap bm, String fileName, String path) throws IOException {String subForder = SAVE_REAL_PATH + path;File foder = new File(subForder);if (!foder.exists()) {foder.mkdirs();}File myCaptureFile = new File(subForder, fileName);if (!myCaptureFile.exists()) {myCaptureFile.createNewFile();}BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(myCaptureFile));press(pressFormat.JPEG, 80, bos);bos.flush();bos.close();Toast.makeText(this, "保存成功", Toast.LENGTH_SHORT).show();以上就是保存图⽚的⽅法,保存完毕之后就是要通知相册刷新了,在4.4中:MediaScannerConnection.scanFile(this, new String[]{SAVE_REAL_PATH+ "/" + fileName}, null, new MediaScannerConnection.OnScanCompletedListener() {@Overridepublic void onScanCompleted(String path, Uri uri) {Log.e( "onScanCompleted: ", path);Log.e( "onScanCompleted: ", uri.toString());}});在4.4以上的是发送⼴播来实现:Intent intent = new Intent(Intent.ACTION_MEDIA_MOUNTED); //这是刷新SD卡// Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); // 这是刷新单个⽂件Uri uri = Uri.fromFile(new File(SAVE_REAL_PATH));intent.setData(uri);sendBroadcast(intent);以上两种⽅式有所区别,刷新SD卡的uri和刷新单个⽂件的uri的path不同,刷新SD卡的path就是外部存储的根⽬录,刷新单个⽂件的path就是你保存图⽚的具体路径,这是暂时我所遇到的坑,4.4⼀下还没测试,如果测试出现问题,欢迎评论。

调用系统相机时出现的Android碎片化问题

调用系统相机时出现的Android碎片化问题

调用系统相机时出现的Android碎片化问题文/腾讯优测李忠丞我们知道,手机中的很多应用都要用到拍照功能。

其中,最低碳的方法就是调用手机中已有的相机程序来完成这个需求,Android也提供了非常方便的实现:然后在Activity的onActivityResult方法中处理拍照后的事情你能相信这短短10几行代码会有好几种机型问题?这时一款优质的云测试平台可以帮助开发团队解决众多适配问题,真机租用可以解决费用不足但又想测试机型的尴尬。

目前我们已知的问题都跟一句代码有关://指定拍照后照片的存储路径intent.putExtra(MediaStore.EXTRA_OUTPUT, picFile);其实这句代码并不是必填项,如果我们不指定照片的存储路径,那么拍照后的相片会以所调用的相机规定命名方式命名并存储到相机默认的存储路径中。

Android标准的默认存储路径为:/mnt/sdcard/dcim/camera这里就会有一个机型问题,极少数手机的系统相机存储路径不是标准的路径,但这个问题的影响范围不是很大,因为我们可以通过onActivityResult方法中回调的Intent data来获取到照片。

然而事实上,绝大多数产品在调用相机的时候还是会指定照片的存储路径,这样做的好处有很多:1.将自己产品的照片单独管理,目录清晰可控;2.可以自己定义照片的命名规则;3.可以对这些照片更轻松的管理,如加密,隐藏等等;既然有这么多好处,我们就要面对其带来的问题:1.onActivityResult方法中的data为空如果指定的照片的存储路径,那么onActivityResult方法中返回的Intent data有可能为Null,所以如果我们指定了路径,就不要使用data来获取照片,起码在使用前要做空判断;2.照片无法获取如果我们使用自己定义的路径来获取照片是不是就没有问题了?很多手机还是无法取到想要的照片,原因不用我说大家也会想得到:1)照片有,但是名字不对如果路径中带有空格,如:file:///mnt/sdcard/123 1.jpg,由于Uri的fromFile方法会将路径中的空格使用“%20”取代,所以当我们打印出处理后的Uri的时候是这个样子:其实对于大多数的手机这都不算事,因为第三方手机在解析存储路径的时候都会将“%20”再替换为空格。

手机相册不显示图片怎么解决五种情况【图文】

手机相册不显示图片怎么解决五种情况【图文】

手机相册不显示图片怎么解决五种情况【图文】随着智能手机的普及,我们越来越开始使用手机来记录我们生活中的一些美好了。

因此在我们的手机会有越来越多的图片。

但是如果有一天,当我们打开我们的图库,发现我们手机中的图片都看不到的时候,我们应该要怎么办呢?毕竟那些留下来的照片可以说是我们最珍贵的回忆呀。

接下来,小编就以不同的情况,来给大家说说,如果手机中图片看不了,我们应该怎么办。

情况一打开手机的图库,可以看见图库不显示任何图片,提示没有图片/视频,只有一个大大的相机图标。

进入文件管理-SD卡-images以及其他存放有图片的文件夹可以发现手机上的图片都没有损坏,可正常显示。

解决方法:使用手机数据线将手机和电脑连接,选择打开USB存储。

勾选显示隐藏文件夹,找到一个叫做.nomedia的文件夹,删除。

部分第三方刷机包ROM可能内置这个文件夹,以此来保护用户的隐私不显示在手机上。

关闭USB存储,拔掉数据线,打开手机-设置-应用-全部-图库-清除数据。

打开360手机安全卫士或LEB安全大师等第三方安全软件-自启管家-系统组件-图库。

如果图库的状态是禁止自启,请取消图库的禁止自启状态,恢复图库的自启行为。

重启手机,图库的内容就可以正常显示了。

情况二图库当中设置隐藏该相册;解决方法:打开图库,选择【菜单】里的【设置】,选择【隐藏相册】,取消选择该相册即可。

情况三相册软件功能不完善,或不稳定。

解决方法:建议安装其它的相册软件。

打开手机助手,搜索相册,安装就OK。

情况四系统使用时间长,稳定性不好。

解决方法:建议手机使用一段时间后,恢复出厂设置,不但稳定,而且速度也比较快。

情况五有的图片在文档里格式不正确就会导致在图库或播放器那些找不出来!一般就是文件名字小数点后的名字不能更改!所以找不出来!或者就是那个文件被你用其他软件设置了私人的!只有内层卡里才看的出来!如果都不是!那你可以试试关机重起过几分钟后再看播放器里有没有你的照片了。

三星手机相册不显示照片怎么办

三星手机相册不显示照片怎么办

三星手机相册不显示照片怎么办三星手机相册不显示照片怎么办方法步骤1、打开手机,在手机界面找到“设置”。

2、点击“设置”,进入到“设置”界面。

3、点击“应用程序”。

4、点击“应用程序管理器”。

5、找到“相册”,然后点击“相册”就可以了。

6、重启手机就能发现照片又出现在相册里了。

若手机拍照照片在相册里显示异常,建议:1.重启手机尝试。

2.重新拍摄一张照片,在相机中预览观察显示是否正常。

3.若使用的是第三方相机软件出现此情况,建议切换自带相机功能拍照尝试。

4.若无效,请备份手机中数据(如联系人、多媒体文件等),将手机恢复出厂设置。

若问题依然存在,建议您携带购机发票、三包凭证将手机送至您就近的售后服务中心检测。

三星手机相册不显示照片1、首先检查手机里相机的存储位置是否选择为存储卡2、点击“设置”3、进入应用程序,查看“全部”4、拉倒最底下,找到“媒体存储”或者“媒体存储器”,把它启用5、重启手机,这个时候你就看到你的.所有图片又会出现在相册里啦!三星手机相册删除了怎么恢复方法一介绍:将手机连接到电脑,选择U盘模式或者大容量储存模式,如果没有数据线的话,照片存在储存卡上,你可以将储存卡查到读卡器上连接。

这是你应该会看到你的手机内存或内存卡应该是以可移动磁盘的形式出现的。

记下你所删除文件所在的磁盘名称,然后打开360安全卫士,进入功能大全,在此目录下找到文件恢复,然后打开。

首次安装需要下载文件,所以会提示初始化,所以要等待一会。

出现界面后,在左上角选择你删除文件所在的储存卡。

然后,单击开始扫描。

等待一会就知道结果了。

提示正在扫描,可以先出去望望风景,休息一下啊!我等待的时间还是比较长的。

扫描完毕后,文件就会出现在列表中。

名称可能和原文件不同,所以需要恢复后查看,点击全选。

然后在右下角选择恢复选中文件,接下来选择恢复文件保存目录。

选择需要恢复文件的保存目录,然后点击确定。

最后,打开你保存的文件夹,不仅仅是照片,还有其他的文件,如果只需要图片,那么就分一下类,只恢复图片文件。

Android开发ImageView图片无法显示解决过程

Android开发ImageView图片无法显示解决过程

Android开发ImageView图⽚⽆法显⽰解决过程今天碰到⼀个⾮常奇怪的问题:在Android中ImageView⽆法显⽰加载的本地SDCard图⽚。

具体过程是:先调⽤本地照相机程序摄像,然后将拍摄的图⽚加载在ImageView中显⽰。

复制代码代码如下:public class ActiEnvi extends Activity {static final String TAG = "ActiEnvi";private static final int REQ_CODE_CAMERA = 0x1;private String imgpath = "";private String tempath = "";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.acti_envi);......}......@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {// 拍照成功并返回if (requestCode == REQ_CODE_CAMERA&& resultCode == Activity.RESULT_OK) {this.imgpath = tempath;Bitmap bm = BitmapFactory.decodeFile(this.imgpath);imgView.setImageBitmap(bm);imgView.setScaleType(ScaleType.FIT_CENTER);}}.......// 调⽤系统相机拍照protected void captureImage() {Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);tempath = IOHelper.generateImgPath();File out = new File(tempath);intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(out));startActivityForResult(intent, REQ_CODE_CAMERA);}......}感觉问题⽐较奇葩。

麦子学院Android开发教程之智能手机内存空间不足的问题

麦子学院Android开发教程之智能手机内存空间不足的问题

麦子学院Android开发教程之智能手机内存空间不足的问题智能手机像电脑一样可以安装大量的应用软件与游戏,这样因为手机空间没有电脑空间大并且智能手机也会产生缓存,这样久了缓存不清除手机就越用越慢了,下面我们来看看常用解决智能手机内存空间不足的方法。

空间不足怎么办1.系统提示内存空间不足了之后,卸载程序也不会增加多少可用空间,仍然会提示系统内存不足,亲测通过格式化手机可以解决,也就是恢复出厂设置(恢复出厂设置会把所有应用都卸载回到最初界面)。

当然这个方法也会让你安装的APP都丢失,如果没必要刷机就再看看下面的。

1、打开RE管理器(第一次打开RE管理器时,系统会弹出窗口询问你是否允许re管理器获取root权限,点击允许即可)2、打开RE管理器后,点击右上角”挂载读写“的按钮;3、进入data/app文件夹,找到该目录下的后缀为ode某的文件,删除即可!4、删除之后,再次安装就不会再出现“存储空间不足”了!不信你试试!安卓教程:使用RE管理器解决“存储空间不足”-解决安装特定应用出现的“存储空间不足”问题4.移动APP到SD卡,这个方法有一定的局限性,当效果不错,部分手机不支持者这样的功能5.使用容量较小的主题包,由于使用的主题都是要求放置在机身内存中的,所以使用小容量的主题包也能很有效的减少内存占用。

内存不足怎么办1、系统提示内存不足解决办法一,可以删除一些不用的程序但这样空间不会有多大的提升,我们可以恢复出厂设置也就是大家讲的格机了:2、在手机中安装RE文件器,然后进入你手机的/data/dalvik-cache 这里面是你手机应用程序所产生的临时文件与缓存文件了,清除这里不要的文件可解决此问题。

3、把一些不要的系统文件删除,但是删除后第一次重启机器会比较慢,大概2分钟才可启动。

Android获取本地相册图片和拍照获取图片的实现方法

Android获取本地相册图片和拍照获取图片的实现方法

Android获取本地相册图⽚和拍照获取图⽚的实现⽅法需求:从本地相册找图⽚,或通过调⽤系统相机拍照得到图⽚。

容易出错的地⽅:1、当我们指定了照⽚的uri路径,我们就不能通过data.getData();来获取uri,⽽应该直接拿到uri(⽤全局变量或者其他⽅式)然后设置给imageViewimageView.setImageURI(uri);2、我发现⼿机前置摄像头拍出来的照⽚只有⼏百KB,直接⽤imageView.setImageURI(uri);没有很⼤问题,但是后置摄像头拍出来的照⽚⽐较⼤,这个时候使⽤imageView.setImageURI(uri);就容易出现 out of memory(oom)错误,我们需要先把URI 转换为Bitmap,再压缩bitmap,然后通过imageView.setImageBitmap(bitmap);来显⽰图⽚。

3、将照⽚存放到SD卡中后,照⽚不能⽴即出现在系统相册中,因此我们需要发送⼴播去提醒相册更新照⽚。

4、这⾥⽤到了sharepreference,要注意⽤完之后移除缓存。

代码:MainActivity:package .test;import android.content.Intent;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import .Uri;import android.os.Bundle;import android.os.Environment;import android.provider.MediaStore;import android.support.v7.app.AppCompatActivity;import android.util.Log;import android.view.View;import android.widget.ImageView;import .test.tools.ImageTools;import java.io.File;import java.io.IOException;import java.text.SimpleDateFormat;import java.util.Date;public class MainActivity extends AppCompatActivity {private static final int PHOTO_FROM_GALLERY = 1;private static final int PHOTO_FROM_CAMERA = 2;private ImageView imageView;private File appDir;private Uri uriForCamera;private Date date;private String str = "";private SharePreference sharePreference;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.activity_main);//Android不推荐使⽤全局变量,我在这⾥使⽤了sharePreferencesharePreference = SharePreference.getInstance(this);imageView = (ImageView) findViewById(R.id.imageView);}//从相册取图⽚public void gallery(View view) {Intent intent = new Intent();intent.setType("image/*");intent.setAction(Intent.ACTION_GET_CONTENT);startActivityForResult(intent, PHOTO_FROM_GALLERY);}//拍照取图⽚public void camera(View view) {Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);uriForCamera = Uri.fromFile(createImageStoragePath());sharePreference.setCache("uri", String.valueOf(uriForCamera));/*** 指定了uri路径,startActivityForResult不返回intent,* 所以在onActivityResult()中不能通过data.getData()获取到uri;*/intent.putExtra(MediaStore.EXTRA_OUTPUT, uriForCamera);startActivityForResult(intent, PHOTO_FROM_CAMERA);}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);//第⼀层switchswitch (requestCode) {case PHOTO_FROM_GALLERY://第⼆层switchswitch (resultCode) {case RESULT_OK:if (data != null) {Uri uri = data.getData();imageView.setImageURI(uri);}break;case RESULT_CANCELED:break;}break;case PHOTO_FROM_CAMERA:if (resultCode == RESULT_OK) {Uri uri = Uri.parse(sharePreference.getString("uri"));updateDCIM(uri);try {//把URI转换为Bitmap,并将bitmap压缩,防⽌OOM(out of memory)Bitmap bitmap = ImageTools.getBitmapFromUri(uri, this);imageView.setImageBitmap(bitmap);} catch (IOException e) {e.printStackTrace();}removeCache("uri");} else {Log.e("result", "is not ok" + resultCode);}break;default:break;}}/*** 设置相⽚存放路径,先将照⽚存放到SD卡中,再操作** @return*/private File createImageStoragePath() {if (hasSdcard()) {appDir = new File("/sdcard/testImage/");if (!appDir.exists()) {appDir.mkdirs();}SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); date = new Date();str = simpleDateFormat.format(date);String fileName = str + ".jpg";File file = new File(appDir, fileName);return file;} else {Log.e("sd", "is not load");return null;}}/*** 将照⽚插⼊系统相册,提醒相册更新** @param uri*/private void updateDCIM(Uri uri) {Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);intent.setData(uri);this.sendBroadcast(intent);Bitmap bitmap = BitmapFactory.decodeFile(uri.getPath());MediaStore.Images.Media.insertImage(getContentResolver(), bitmap, "", "");}/*** 判断SD卡是否可⽤** @return*/private boolean hasSdcard() {if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { return true;} else {return false;}}/*** 移除缓存** @param cache*/private void removeCache(String cache) {if (sharePreference.ifHaveShare(cache)) {sharePreference.removeOneCache(cache);} else {Log.e("this cache", "is not exist.");}}}ImageTools:package .test.tools;import android.app.Activity;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import .Uri;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;public class ImageTools {/*** 通过uri获取图⽚并进⾏压缩** @param uri* @param activity* @return* @throws IOException*/public static Bitmap getBitmapFromUri(Uri uri, Activity activity) throws IOException { InputStream inputStream = activity.getContentResolver().openInputStream(uri);BitmapFactory.Options options = new BitmapFactory.Options();options.inJustDecodeBounds = true;options.inDither = true;options.inPreferredConfig = Bitmap.Config.ARGB_8888;BitmapFactory.decodeStream(inputStream, null, options);inputStream.close();int originalWidth = options.outWidth;int originalHeight = options.outHeight;if (originalWidth == -1 || originalHeight == -1) {return null;}float height = 800f;float width = 480f;int be = 1; //be=1表⽰不缩放if (originalWidth > originalHeight && originalWidth > width) {be = (int) (originalWidth / width);} else if (originalWidth < originalHeight && originalHeight > height) {be = (int) (originalHeight / height);}if (be <= 0) {be = 1;}BitmapFactory.Options bitmapOptinos = new BitmapFactory.Options();bitmapOptinos.inSampleSize = be;bitmapOptinos.inDither = true;bitmapOptinos.inPreferredConfig = Bitmap.Config.ARGB_8888;inputStream = activity.getContentResolver().openInputStream(uri);Bitmap bitmap = BitmapFactory.decodeStream(inputStream, null, bitmapOptinos);inputStream.close();return compressImage(bitmap);}/*** 质量压缩⽅法** @param bitmap* @return*/public static Bitmap compressImage(Bitmap bitmap) {ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();press(pressFormat.JPEG, 100, byteArrayOutputStream);int options = 100;while (byteArrayOutputStream.toByteArray().length / 1024 > 100) {byteArrayOutputStream.reset();//第⼀个参数:图⽚格式,第⼆个参数:图⽚质量,100为最⾼,0为最差,第三个参数:保存压缩后的数据的流 press(pressFormat.JPEG, options, byteArrayOutputStream);options -= 10;}ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray()); Bitmap bitmapImage = BitmapFactory.decodeStream(byteArrayInputStream, null, null);return bitmapImage;}}AndroidMainfest.xml:<?xml version="1.0" encoding="utf-8"?><manifest package=".test"xmlns:android="/apk/res/android"><uses-featureandroid:name="android.hardware.camera"android:required="true"/><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.CAMERA"/><uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/><uses-permission android:name="com.miui.whetstone.permission.ACCESS_PROVIDER"/><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/><uses-feature android:name="android.hardware.camera.autofocus" /><applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:supportsRtl="true"android:theme="@style/AppTheme"><activity android:name=".MainActivity"><intent-filter><action android:name="android.intent.action.MAIN"/><category android:name="UNCHER"/></intent-filter></activity></application></manifest>activity_main.xml:<?xml version="1.0" encoding="utf-8"?><LinearLayoutxmlns:android="/apk/res/android"xmlns:tools="/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:background="#fff"android:orientation="vertical"tools:context=".test.MainActivity"><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="从图库找图⽚"android:id="@+id/gallery"android:onClick="gallery"android:background="#ccc"android:textSize="20sp"android:padding="10dp"android:layout_marginLeft="30dp"android:layout_marginTop="40dp"/><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="拍照获取图⽚"android:id="@+id/camera"android:onClick="camera"android:background="#ccc"android:textSize="20sp"android:padding="10dp"android:layout_marginLeft="30dp"android:layout_marginTop="40dp"/><ImageViewandroid:layout_width="300dp"android:layout_height="300dp"android:id="@+id/imageView"android:scaleType="fitXY"android:background="@mipmap/ic_launcher"android:layout_marginTop="40dp"android:layout_marginLeft="30dp"/></LinearLayout>效果图:或许有⼈会问,在Android6.0上⾯怎么点击拍照就出现闪退,那是因为我设置的最⾼SDK版本⼤于23,⽽我现在还没对运⾏时权限做处理,也许我会在下⼀篇博客⾥处理这个问题。

如何解决手机无法预览照片的问题

如何解决手机无法预览照片的问题

如何解决手机无法预览照片的问题在现代社会中,手机已经成为我们生活中不可或缺的一部分。

我们使用手机拍摄照片,记录美好瞬间,但有时候我们可能会遇到手机无法预览照片的问题。

这个问题可能会让我们感到困惑和沮丧,因为我们无法立即查看或分享我们拍摄的照片。

然而,不必担心,下面将介绍几种解决手机无法预览照片的常见方法。

一、检查照片格式和文件大小首先,我们需要检查照片的格式和文件大小。

有时候,手机无法预览照片是因为照片的格式不受手机支持,或者照片文件过大。

在这种情况下,我们可以尝试将照片转换为手机支持的格式,或者压缩照片的文件大小。

可以通过使用专业的照片编辑软件或在线工具来完成这些操作。

二、清理手机存储空间手机存储空间不足也是导致无法预览照片的常见原因之一。

当手机存储空间不足时,系统可能会自动清理缓存文件,其中可能包括我们的照片。

因此,我们可以通过清理手机存储空间来解决这个问题。

可以删除不再需要的应用程序、照片、视频和其他大型文件,或者将它们转移到云存储服务中,以释放更多的存储空间。

三、更新手机操作系统和应用程序有时候,手机无法预览照片是因为操作系统或应用程序存在问题。

为了解决这个问题,我们可以尝试更新手机的操作系统和应用程序。

操作系统和应用程序的更新通常包含了修复漏洞和改进功能的内容,可能会解决照片预览问题。

我们可以通过进入手机的设置菜单,找到关于手机的选项,然后检查更新并进行安装。

四、重启手机如果以上方法都无法解决问题,我们可以尝试简单的重启手机。

重启手机可以清除临时文件和缓存,有时候可以修复一些软件故障。

我们可以长按手机的电源按钮,选择关机或重启选项,然后等待手机重新启动。

五、查找专业帮助如果以上方法都无效,我们可能需要寻求专业帮助。

我们可以咨询手机制造商的客户服务,他们可能会提供更具体的解决方案。

另外,我们还可以寻求手机维修店或技术专家的帮助,他们可能会有更多经验和技术来解决手机无法预览照片的问题。

总结手机无法预览照片是一个常见的问题,但我们可以通过一些简单的方法来解决。

麦子学院Android开发教程拍照保存系统相册不显示照片问题

麦子学院Android开发教程拍照保存系统相册不显示照片问题

现在几乎所有app应用都可以调用手机的照相功能了,但我在开始时碰到一个问题就是拍照之后在系统相册中找不到我拍照的照片怎么办?下面我来给各位同学一并分享一下。

系统已经有的东西,如果我们没有新的需求的话,直接调用是最直接的。

下面讲讲调用系统相机拍照并保存图片和如何调用系统相册的方法。

首先看看调用系统相机的核心方法:代码如下Intent camera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);startActivityForResult(camera, CAMERA);相机返回的数据通过下面的回调方法取得,并处理:代码如下@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);if(requestCode == CAMERA && resultCode == Activity.RESULT_OK && null != data){String sdState=Environment.getExternalStorageState();if(!sdState.equals(Environment.MEDIA_MOUNTED)){GameLog.log(Tag, "sd card unmount");return;}new DateFormat();String name= DateFormat.format("yyyyMMdd_hhmmss",Calendar.getInstance(Locale.CHINA))+".jpg";Bundle bundle = data.getExtras();//获取相机返回的数据,并转换为图片格式Bitmap bitmap = (Bitmap)bundle.get("data");FileOutputStream fout = null;File file = new File("/sdcard/pintu/");file.mkdirs();String filename=file.getPath()+name;try {fout = new FileOutputStream(filename);press(pressFormat.JPEG, 100, fout);} catch (FileNotFoundException e) {e.printStackTrace();}finally{try {fout.flush();fout.close();} catch (IOException e) {e.printStackTrace();}}//显示图片}}下面是调用系统相册并取得照片的方法:代码如下Intent picture = newIntent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_C ONTENT_URI);startActivityForResult(picture, PICTURE);下面是相应的回调方法:代码如下@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);if(requestCode == CAMERA && resultCode == Activity.RESULT_OK && null != data){Uri selectedImage = data.getData();String[] filePathColumns={MediaStore.Images.Media.DATA};Cursor c = this.getContentResolver().query(selectedImage, filePathColumns,null,null, null);c.moveToFirst();int columnIndex = c.getColumnIndex(filePathColumns[0]);String picturePath= c.getString(columnIndex);c.close();//获取图片并显示}这样就完成了系统调用,很简单,但是有些朋友会碰到照片拍好了,在手机相册中发现照片不显示呀。

Android系统开发中的常见问题与解决方案

Android系统开发中的常见问题与解决方案

Android系统开发中的常见问题与解决方案Android系统是目前市场上最为流行的移动操作系统之一,其强大的开放性和灵活的应用环境为广大开发者提供了广阔的创作空间和机会。

Android系统开发涉及的问题种类繁多,以下将介绍Android系统开发中的常见问题及其解决方案。

一、开发环境问题1、安装SDK和ADT后无法启动Eclipse解决方案:打开Eclipse安装目录下的eclipse.ini文件,将其中的-Xms和-Xmx参数的值分别改为512m即可。

2、出现“这个SDK目录没有被正确配置,请确定是否安装了NDK/pltaforms目录”提示解决方案:首先检查是否正确安装了NDK和pltaforms目录,其次将SDK目录设置成正确的路径。

3、出现“无法启动AVD,可能是因为该AVD的SD卡路径不存在”提示解决方案:在AVD Manager中编辑该AVD,将SD卡路径设置成正确的路径即可。

二、布局问题1、布局文件中的元素无法居中显示解决方案:在布局文件中为该元素添加android:gravity="center"属性。

2、布局中的元素无法完全填充父容器解决方案:为该元素添加android:layout_width="match_parent"和android:layout_height="match_parent"属性。

3、布局中的元素无法按比例缩放解决方案:使用PercentRelativeLayout或PercentFrameLayout来实现布局,具体使用方法可以参考相关文档。

三、网络请求问题1、无法连接到服务器解决方案:检查网络连接是否正常,检查服务器地址是否正确,检查防火墙设置是否会影响连接。

2、请求返回的数据格式错误解决方案:检查请求参数是否正确,检查服务器是否按照要求返回数据,检查数据解析方法是否正确。

3、请求超时或请求被取消解决方案:为请求设置合理的超时时间,检查网络是否正常,检查请求实现是否正确。

华为手机拍照后找不到照片

华为手机拍照后找不到照片

华为手机拍照后找不到照片
1. 请确认“文件管理”的“DCIM\Camera”目录下是否存在所拍摄的照片(如果手机插入了microSD卡,请查看microSD卡的相同目录),若存在则建议重启手机。

2. 如果手机中已插入microSD卡,建议将microSD卡取出,然后再次拍照确认。

若图库中能看到照片,则说明microSD卡已经损坏,状态异常,建议更换新的microSD卡。

3. 如果取出microSD卡后,拍摄照片仍不显示,可尝试以下方法:
EMUI 3.1及以下系统:点击“设置 > 应用(应用管理)”,分别点击“图库 > 删除数据”,以及“相机 > 删除数据”。

EMUI 4.0及以上系统:点击“设置 > 应用管理 > 菜单”,选择显示系统进程,然后分别点击“图库 > 存储 > 删除数据”,以及“相机 > 存储 > 删除数据”。

4. 如果以上方法仍无法解决问题,请您备份数据,将手机恢复出厂设置。

粉粉您好,如果“文件管理”的“DCIM\Camera”目录下存在所拍摄的照片(如果手机插入了microSD卡,请查看microSD卡的相同目录),您重启手机试试。

2. 如果手机中已插入SD卡,建议将SD卡取出,然后再次拍照确认。

图库中能看到照片,就说明SD卡已经损坏,状态异常,建议您更换新的SD卡。

3. 如果取出SD卡后,拍摄照片仍不显示,您如果有上传过照片在云端,请点击“设置-应用管理-菜单”,选择显示系统进程,然后分别点击“图库 -存储 - 删除数据”,以及“相机- 存储-删除数据”。

麦子学院Android开发教程Movie导入GIF图片异常IOException。reset的问题

麦子学院Android开发教程Movie导入GIF图片异常IOException。reset的问题

下面小编来给各位同学介绍一篇关于Android中Movie导入播放GIF图片文件异常IOException.reset的解决办法,希望些方法对你有帮助。

使用Movie播放GIF图片时,能正常导入assets中的gif文件,如:代码如下is=context.getResources().openRawResource(R.drawable.mygif);movie = Movie.decodeStream(is);然而把网络图片加载到本地后,却报以下错误:代码如下java.io.IOExceptionat java.io.InputStream.reset(InputStream.java:218)at android.graphics.Movie.decodeStream(Native Method)at android.graphics.Movie.decodeTempStream(Movie.java:74)at android.graphics.Movie.decodeFile(Movie.java:59)我是在Androidmanifest.xml声明了权限:代码如下<uses-permission android:name="android.permission.INTERNET"/>at >.graphics.decodeStream(Native Method)<uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/>解决办法:代码如下InputStream is = null;try {is = new BufferedInputStream(new FileInputStream(new File(getCacheDir(), "mygif.gif")), 16 * 1024);is.mark(16 * 1024);} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}movie = Movie.decodeStream(is);。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

现在几乎所有app应用都可以调用手机的照相功能了,但我在开始时碰到一个问题就是拍照之后在系统相册中找不到我拍照的照片怎么办?下面我来给各位同学一并分享一下。

系统已经有的东西,如果我们没有新的需求的话,直接调用是最直接的。

下面讲讲调用系统相机拍照并保存图片和如何调用系统相册的方法。

首先看看调用系统相机的核心方法:代码如下Intent camera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);startActivityForResult(camera, CAMERA);相机返回的数据通过下面的回调方法取得,并处理:代码如下@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);if(requestCode == CAMERA && resultCode == Activity.RESULT_OK && null != data){String sdState=Environment.getExternalStorageState();if(!sdState.equals(Environment.MEDIA_MOUNTED)){GameLog.log(Tag, "sd card unmount");return;}new DateFormat();String name= DateFormat.format("yyyyMMdd_hhmmss",Calendar.getInstance(Locale.CHINA))+".jpg";Bundle bundle = data.getExtras();//获取相机返回的数据,并转换为图片格式Bitmap bitmap = (Bitmap)bundle.get("data");FileOutputStream fout = null;File file = new File("/sdcard/pintu/");file.mkdirs();String filename=file.getPath()+name;try {fout = new FileOutputStream(filename);press(pressFormat.JPEG, 100, fout);} catch (FileNotFoundException e) {e.printStackTrace();}finally{try {fout.flush();fout.close();} catch (IOException e) {e.printStackTrace();}}//显示图片}}下面是调用系统相册并取得照片的方法:代码如下Intent picture = newIntent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_C ONTENT_URI);startActivityForResult(picture, PICTURE);下面是相应的回调方法:代码如下@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);if(requestCode == CAMERA && resultCode == Activity.RESULT_OK && null != data){Uri selectedImage = data.getData();String[] filePathColumns={MediaStore.Images.Media.DATA};Cursor c = this.getContentResolver().query(selectedImage, filePathColumns,null,null, null);c.moveToFirst();int columnIndex = c.getColumnIndex(filePathColumns[0]);String picturePath= c.getString(columnIndex);c.close();//获取图片并显示}这样就完成了系统调用,很简单,但是有些朋友会碰到照片拍好了,在手机相册中发现照片不显示呀。

解决Android拍照保存在系统相册不显示的问题MediaStore.Images.Media.insertImage(getContentResolver(), mBitmap, "", "");通过上面的那句代码就能插入到系统图库,这时候有一个问题,就是我们不能指定插入照片的名字,而是系统给了我们一个当前时间的毫秒数为名字,有一个问题郁闷了很久,我还是先把insertImage的源码贴出来吧代码如下/*** Insert an image and create a thumbnail for it.** @param cr The content resolver to use* @param source The stream to use for the image* @param title The name of the image* @param description The description of the image* @return The URL to the newly created image, or <code>null</code> if the image failed to be stored* for any reason.*/public static final String insertImage(ContentResolver cr, Bitmap source,String title, String description) {ContentValues values = new ContentValues();values.put(Images.Media.TITLE, title);values.put(Images.Media.DESCRIPTION, description);values.put(Images.Media.MIME_TYPE, "image/jpeg");Uri url = null;String stringUrl = null; /* value to be returned */try {url = cr.insert(EXTERNAL_CONTENT_URI, values);if (source != null) {OutputStream imageOut = cr.openOutputStream(url);try {press(pressFormat.JPEG, 50, imageOut); } finally {imageOut.close();}long id = ContentUris.parseId(url);// Wait until MINI_KIND thumbnail is generated.Bitmap miniThumb = Images.Thumbnails.getThumbnail(cr, id,Images.Thumbnails.MINI_KIND, null);// This is for backward compatibility.Bitmap microThumb = StoreThumbnail(cr, miniThumb, id, 50F, 50F, Images.Thumbnails.MICRO_KIND);} else {Log.e(TAG, "Failed to create thumbnail, removing original");cr.delete(url, null, null);url = null;}} catch (Exception e) {Log.e(TAG, "Failed to insert image", e);if (url != null) {cr.delete(url, null, null);url = null;}}if (url != null) {stringUrl = url.toString();}return stringUrl;}上面方法里面有一个title,我刚以为是可以设置图片的名字,设置一下,原来不是,郁闷,哪位高手知道title这个字段是干嘛的,告诉下小弟,不胜感激!当然Android还提供了一个插入系统相册的方法,可以指定保存图片的名字,我把源码贴出来吧代码如下/*** Insert an image and create a thumbnail for it.** @param cr The content resolver to use* @param imagePath The path to the image to insert* @param name The name of the image* @param description The description of the image* @return The URL to the newly created image* @throws FileNotFoundException*/public static final String insertImage(ContentResolver cr, String imagePath, String name, String description) throws FileNotFoundException {// Check if file exists with a FileInputStream// FileInputStream stream = new FileInputStream(imagePath);try {Bitmap bm = BitmapFactory.decodeFile(imagePath);String ret = insertImage(cr, bm, name, description);bm.recycle();return ret;} finally {try {stream.close();} catch (IOException e) {}}}啊啊,贴完源码我才发现,这个方法调用了第一个方法,这个name就是上面方法的title,晕死,这下更加郁闷了,反正我设置title无效果,求高手为小弟解答,先不管了,我们继续往下说上面那段代码插入到系统相册之后还需要发条广播代码如下sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"+ Environment.getExternalStorageDirectory())));上面那条广播是扫描整个sd卡的广播,如果你sd卡里面东西很多会扫描很久,在扫描当中我们是不能访问sd卡,所以这样子用户体现很不好,用过微信的朋友都知道,微信保存图片到系统相册并没有扫描整个SD卡,所以我们用到下面的方法代码如下Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);Uri uri = Uri.fromFile(new File("/sdcard/image.jpg"));intent.setData(uri);mContext.sendBroadcast(intent);或者用MediaScannerConnection代码如下final MediaScannerConnection msc = new MediaScannerConnection(mContext, new MediaScannerConnectionClient() {public void onMediaScannerConnected() {msc.scanFile("/sdcard/image.jpg", "image/jpeg");}public void onScanCompleted(String path, Uri uri) {Log.v(TAG, "scan completed");msc.disconnect();}});也行你会问我,怎么获取到我们刚刚插入的图片的路径?呵呵,这个自有方法获取,insertImage(ContentResolver cr, Bitmap source,String title, String description),这个方法给我们返回的就是插入图片的Uri,我们根据这个Uri就能获取到图片的绝对路径代码如下private String getFilePathByContentResolver(Context context, Uri uri) {if (null == uri) {return null;}Cursor c = context.getContentResolver().query(uri, null, null, null, null);String filePath = null;if (null == c) {throw new IllegalArgumentException("Query on " + uri + " returns null result.");}try {if ((c.getCount() != 1) || !c.moveToFirst()) {} else {filePath = c.getString(c.getColumnIndexOrThrow(MediaColumns.DATA));}} finally {c.close();}return filePath;}根据上面的那个方法获取到的就是图片的绝对路径。

相关文档
最新文档