移动互联网开发教学案例学习-8
2021SC@SDUSC
目录
案例——draw_compare
MSurfaceView类——SurfaceView基本框架
saveToFile(Bitmap bitmap)方法
SD卡状态:
对SD卡状态的监听方式:
案例——draw_compare
MSurfaceView类——SurfaceView基本框架
saveToFile(Bitmap bitmap)方法
该方法用于将文件保存至SD卡
public void saveToFile(Bitmap bitmap) {//获取SD卡状态String state = Environment.getExternalStorageState();//判断SD卡是否就绪if (!state.equals(Environment.MEDIA_MOUNTED)) {Log.e("TAG","SD card is not mounted");return;}//取得SD卡根目录File file = Environment.getExternalStorageDirectory();try {Log.e("T", "======SD卡根目录:" + file.getCanonicalPath());if(file.exists()){Log.e("T", "file.getCanonicalPath() == " + file.getCanonicalPath());}/*输出流的构造参数1:可以是File对象 也可以是文件路径输出流的构造参数2:默认为False=>覆盖内容; true=>追加内容*/File myfile=new File(file.getCanonicalPath()+"/dbq.jpg");FileOutputStream fos = new FileOutputStream(myfile);bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);fos.flush();fos.close();
// Toast.makeText(this, "保存成功", Toast.LENGTH_SHORT).show();Log.e("TAG","save successfully");} catch (IOException e) {e.printStackTrace();} finally {}}
SD卡状态:
Environment.MEDIA_MOUNTED // sd卡在手机上正常使用状态
Environment.MEDIA_UNMOUNTED // 用户手工到手机设置中卸载sd卡之后的状态
Environment.MEDIA_REMOVED // 用户手动卸载,然后将sd卡从手机取出之后的状态
Environment.MEDIA_BAD_REMOVAL // 用户未到手机设置中手动卸载sd卡,直接拨出之后的状态
Environment.MEDIA_SHARED // 手机直接连接到电脑作为u盘使用之后的状态
Environment.MEDIA_CHECKINGS // 手机正在扫描sd卡过程中的状态
在做android开发对sd操作时,最好是sd卡处于Environment.MEDIA_MOUNTED状态时,对sd卡上的文件进行操作,其他状态不宜进行操作。
对SD卡状态的监听方式:
1.注册StorageEventListener来监听sd卡的状态
StorgeEventListener中有onStorageStateChanged()方法,当sd卡状态改变时,此方法会调用,对各状态的判断一般会用到Environment类,此类中包含的有关sd卡状态的常量有:
MEDIA_BAD_REMOVAL:表明SDCard 被卸载前己被移除
MEDIA_CHECKING:表明对象正在磁盘检查
MEDIA_MOUNTED:表明sd对象是存在并具有读/写权限
MEDIA_MOUNTED_READ_ONLY:表明对象权限为只读
MEDIA_NOFS:表明对象为空白或正在使用不受支持的文件系统
MEDIA_REMOVED:如果不存在 SDCard 返回
MEDIA_SHARED:如果 SDCard 未安装 ,并通过 USB 大容量存储共享 返回
MEDIA_UNMOUNTABLE:返回 SDCard 不可被安装 如果 SDCard 是存在但不可以被安装
MEDIA_UNMOUNTED:返回 SDCard 已卸掉如果 SDCard 是存在但是没有被安装
2.通过接收Intent来监听sd卡的状态
sd卡状态改变时,MountServices会发送Intent,可以通过接受Intent来得到sd卡的状态,Intent中关于sd卡状态的action有:
MEDIA_BAD_REMOVAL_ACTION:sd卡已经从sd卡插槽拔出,但是挂载点还没解除
MEDIA_EJECT_ACTION:用户想要移除sd卡
MEDIA_MOUNTED_ACTION:sd卡被插入,且已经挂载
MEDIA_REMOVED_ACTION:sd卡被移除
MEDIA_SHARED_ACTION:sd卡作为 USB 大容量存储被共享,挂载被解除
MEDIA_UNMOUNTED_ACTION:sd卡存在,但还没有挂载
MEDIA_SCANNER_STARTED_ACTION:开始扫描
MEDIA_SCANNER_FINISHED_ACTION:扫描完成
android读取资源文叫bitmap,通过代码获取Bitmap图片资源
1. 图片存放在SD卡中
Bitmap bitmap = BitmapFactory.decodeFile(path);
这里path是图片位图资源的路径,根目录是/sdcard
2. 图片在项目的res文件夹下面
ApplicationInfo appInfo = getApplicationInfo();
int resID = getResources().getIdentifier(name, "drawablePath", appInfo.packageName);
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), resID);
这里是通过图片的id,或者直接通过R文件来获取(例如 R.drawable.bitmapName)图片的,其中,name是
该图片的名字,drawablePath是该图片存放的目录,appInfo.packageName是应用程序的包。
3. 图片放在src目录下
//图片存放的路径
String path = "com/xiangmu/test.png"
//得到图片流
InputStream is = getClassLoader().getResourceAsStream(path);
Bitmap bitmap = BitmapFactory.decodeStream(is);
4. Android中有个Assets目录,这里可以存放只读文件
//图片存放的路径为asset/test.png
String path = "test.png";
InputStream is = getResources().getAssets().open(path);
Bitmap bitmap = BitmapFactory.decodeStream(is);
移动互联网开发教学案例学习-8相关推荐
- 移动互联网开发教学案例学习-13
2021SC@SDUSC 目录 案例--draw_compare AdjustBitmap类 sizeBitmap方法 scaleBitmap方法 getCircleBitmap方法 对本学期移动互联 ...
- 【超简短的独立游戏开发教学】学习记录
[超简短的独立游戏开发教学]学习记录 一.游戏开发是什么 二.工欲善其事,必先利其器(工具) 三.关于编程 七.Unity常用组件 八.UI还能长什么样? 九.草履虫也能看得懂的乐理入门 十.为了讲故 ...
- 移动互联网开发技术教学网站项目研究综述
2021@SDUSC 目录 第一篇:综述 一.项目介绍 二.项目分工 三.项目所用软件下载和环境配置 1.安装Android Studio 2.配置JDK环境 四.使用说明 第一篇:综述 一.项目介绍 ...
- unity应用开发实战案例_Unity开发实战游戏教学案例分享
进行项目实战是快速入门或提升Unity开发的关键.Asset Store资源商店中,有大量完整项目模板和教学案例,帮助您通过项目实战,让你体会到Unity开发的成就感. 本文我们为大家准备了三款实战游 ...
- 基于Unity的2D小游戏 SpeedDown 开发笔记(学习bilibili@[M_Studio]的教学视频
基于Unity的2D小游戏 SpeedDown 开发笔记(学习bilibili@M_Studio的教学视频) 主要内容:在Sunnyland游戏的设计基础上,新增了物理组件Joint系列.DrawGi ...
- Delphi进行CAD二次开发教学(1)——基础学习:运行、新建、打开图形文件
http://hi.baidu.com/piaoliuxia/blog/item/d61e03faed3bd18c9f514670.html 查看文章 [原创]Delphi进行CAD二次开发教学( ...
- OpenCL开发案例学习
OpenCL开发案例学习 本文主要为开发者提供一些OpenCL程序的实现方法,帮助开发者更直观地了解如何使用OpenCL编写程序. [案例]基于OpenCL的并行HDR算法实现 [案例]基于OpenC ...
- golang 比较完美的通用框架,kratos v2.0 学习,一套轻量级 Go 微服务框架,包含大量微服务相关框架及工具。涵盖了互联网开发的常用功能模块的开发库。
目录 前言 1,关于kratos v2.0 2,Principles 原则 2,Features 特色 3,Architecture 架构 4,总结 前言 本文的原文连接是: https://blog ...
- 慕课网_《Java微信公众号开发进阶》学习总结
时间:2017年08月12日星期六 说明:本文部分内容均来自慕课网.@慕课网:http://www.imooc.com 教学源码:http://img.mukewang.com/down/... 学习 ...
最新文章
- (一)Java基础巩固
- MySQL面试题 | 附答案解析(一)
- 双料状元收割神器来了!清华设立计算机金融双学士学位
- mysql hostname uroot_CACTI网络流量监控
- 使用C# 未解决的问题(VS2012)
- java 如何结束线程_java中,如何安全的结束一个正在运行的线程?
- light7在微信ios下input点击困难
- TurboMail成功建设某省建工集团邮件系统
- (oracle)八、表
- 我的世界javamod怎么装_你不装绞盘,怎么在越野圈混?
- zabbix配置方糖微信推送报警
- Asp.NET Core+ABP框架+IdentityServer4+MySQL+Ext JS之部署到Linux
- 路由器的两种工作模式
- 沃丰科技AI助力客户服务数字化转型加速
- Collision Filtering(selective collisions) 碰撞过滤(选择性碰撞)
- 关于LVM快速扩展Linux根目录/,缩减重挂载/home目录
- mysql where in and_mysql中 where in 用法详解
- C和C++混合编程(error C2059: syntax error : 'string')
- tar 将软连接的文件也进行打包
- hsql统计两天数据差异的算法及lag()/led()分析函数的使用
热门文章
- Java基础篇(集合)
- 爱普生XP245 EPSON XP245升级固件墨盒不识别免芯片固件免费下载解决方法教程
- MySQL异常 check the manual that corresponds
- C语言期末考试测试题及答案
- 移动硬盘文件乱码是怎么回事?数据还能恢复吗
- 离校毕业生刚去新的陌生城市,需要提高警惕的几点
- vue-cli cdn方式引入Vue模块
- 2022ICPC杭州 F. Da Mi Lao Shi Ai Kan De codeforces gym 104090F
- python3APP爬虫--爬取王者荣耀小姐姐cosplay照片(附源码)
- 钉钉邮箱登录入口_阿里企业邮箱发信失败 报错:554reject by content_「阿里云企业邮箱_阿里企业邮箱」指定经销商热线:400-855...