移动互联网开发教学案例学习-8
2021SC@SDUSC
目錄
案例——draw_compare
MSurfaceView類——SurfaceView基本框架
saveToFile(Bitmap bitmap)方法
SD卡狀態(tài):?
對(duì)SD卡狀態(tài)的監(jiān)聽方式:
案例——draw_compare
MSurfaceView類——SurfaceView基本框架
saveToFile(Bitmap bitmap)方法
該方法用于將文件保存至SD卡
public void saveToFile(Bitmap bitmap) {//獲取SD卡狀態(tài)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());}/*輸出流的構(gòu)造參數(shù)1:可以是File對(duì)象 也可以是文件路徑輸出流的構(gòu)造參數(shù)2:默認(rèn)為False=>覆蓋內(nèi)容; true=>追加內(nèi)容*/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卡狀態(tài):?
Environment.MEDIA_MOUNTED // sd卡在手機(jī)上正常使用狀態(tài)?
Environment.MEDIA_UNMOUNTED // 用戶手工到手機(jī)設(shè)置中卸載sd卡之后的狀態(tài)?
Environment.MEDIA_REMOVED // 用戶手動(dòng)卸載,然后將sd卡從手機(jī)取出之后的狀態(tài)?
Environment.MEDIA_BAD_REMOVAL // 用戶未到手機(jī)設(shè)置中手動(dòng)卸載sd卡,直接撥出之后的狀態(tài)?
Environment.MEDIA_SHARED // 手機(jī)直接連接到電腦作為u盤使用之后的狀態(tài)?
Environment.MEDIA_CHECKINGS // 手機(jī)正在掃描sd卡過程中的狀態(tài)?
在做android開發(fā)對(duì)sd操作時(shí),最好是sd卡處于Environment.MEDIA_MOUNTED狀態(tài)時(shí),對(duì)sd卡上的文件進(jìn)行操作,其他狀態(tài)不宜進(jìn)行操作。?
對(duì)SD卡狀態(tài)的監(jiān)聽方式:
1.注冊(cè)StorageEventListener來監(jiān)聽sd卡的狀態(tài)
StorgeEventListener中有onStorageStateChanged()方法,當(dāng)sd卡狀態(tài)改變時(shí),此方法會(huì)調(diào)用,對(duì)各狀態(tài)的判斷一般會(huì)用到Environment類,此類中包含的有關(guān)sd卡狀態(tài)的常量有:
MEDIA_BAD_REMOVAL:表明SDCard 被卸載前己被移除?
MEDIA_CHECKING:表明對(duì)象正在磁盤檢查?
MEDIA_MOUNTED:表明sd對(duì)象是存在并具有讀/寫權(quán)限?
MEDIA_MOUNTED_READ_ONLY:表明對(duì)象權(quán)限為只讀?
MEDIA_NOFS:表明對(duì)象為空白或正在使用不受支持的文件系統(tǒng)?
MEDIA_REMOVED:如果不存在 SDCard 返回?
MEDIA_SHARED:如果 SDCard 未安裝 ,并通過 USB 大容量存儲(chǔ)共享 返回?
MEDIA_UNMOUNTABLE:返回 SDCard 不可被安裝 如果 SDCard 是存在但不可以被安裝?
MEDIA_UNMOUNTED:返回 SDCard 已卸掉如果 SDCard 是存在但是沒有被安裝?
2.通過接收Intent來監(jiān)聽sd卡的狀態(tài)
sd卡狀態(tài)改變時(shí),MountServices會(huì)發(fā)送Intent,可以通過接受Intent來得到sd卡的狀態(tài),Intent中關(guān)于sd卡狀態(tài)的action有:
MEDIA_BAD_REMOVAL_ACTION:sd卡已經(jīng)從sd卡插槽拔出,但是掛載點(diǎn)還沒解除?
MEDIA_EJECT_ACTION:用戶想要移除sd卡?
MEDIA_MOUNTED_ACTION:sd卡被插入,且已經(jīng)掛載?
MEDIA_REMOVED_ACTION:sd卡被移除?
MEDIA_SHARED_ACTION:sd卡作為 USB 大容量存儲(chǔ)被共享,掛載被解除?
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. 圖片在項(xiàng)目的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是應(yīng)用程序的包。
3. 圖片放在src目錄下
//圖片存放的路徑
String path = "com/xiangmu/test.png"
//得到圖片流
InputStream is = getClassLoader().getResourceAsStream(path);
Bitmap bitmap = BitmapFactory.decodeStream(is);
4. Android中有個(gè)Assets目錄,這里可以存放只讀文件
//圖片存放的路徑為asset/test.png
String path = "test.png";
InputStream is = getResources().getAssets().open(path);
Bitmap bitmap = BitmapFactory.decodeStream(is);
總結(jié)
以上是生活随笔為你收集整理的移动互联网开发教学案例学习-8的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 发送手机验证码
- 下一篇: VM中centos中设置共享文件夹