移动互联网开发教学案例学习-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的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 发送手机验证码
- 下一篇: VM中centos中设置共享文件夹