各位Android安卓開發者大家安安大家好 ^^
|
小黑人今天要與大家分享的是"讀取SDCard圖片",因為SDCard的儲存空間可以存入很多的檔案,例如相片、音樂...等各類型檔案,那如果要將SDCard內的相片圖片放入APP裡顯示的話要如何讀取呢?這就是小黑人今天要與大家分享簡單快速的讀取SDCard相片圖片方法,就讓我們繼續看下去吧。
|
|
1.讀取SDCard內的相片圖片只需要在程式裡(.java)撰寫即可。 |
public class MainActivity extends Activity
{
private ImageView img;
private Button btn;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//顯示SDCard圖片的ImageView與進行讀取SDCard圖片的Button
img = (ImageView) findViewById(R.id.img);
btn = (Button) findViewById(R.id.sd);
btn.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View arg0)
{
//確認是否有插入SDCard
if(checkSDCard())
{
//帶入SDCard內的圖片路徑(SDCard: DCIM資料夾/100MEDIA資料夾/001圖片)
img.setImageBitmap(getBitmapFromSDCard("DCIM/100MEDIA/001.jpg"));
}
else Toast.makeText(MainActivity.this,
"尚未插入SDCard",
Toast.LENGTH_SHORT).show();
}
});
}
//確認是否有插入SDCard
private static boolean checkSDCard()
{
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))
{
return true;
}
return false;
}
//讀取SDCard圖片,型態為Bitmap
private static Bitmap getBitmapFromSDCard(String file)
{
try
{
String sd = Environment.getExternalStorageDirectory().toString();
Bitmap bitmap = BitmapFactory.decodeFile(sd + "/" + file);
return bitmap;
}
catch (Exception e)
{
e.printStackTrace();
return null;
}
}
} |
|
畫面預覽 : |
|
|
以上就是讀取並顯示SDCard內相片圖片的實作程式碼,大家可以參考看看唷 ^^
如有任何問題都可以和小黑人一起交流討論喔~謝謝大家~! XDD |
|
如果沒有直接指定『照片(001.jpg)』,
回覆刪除以變數(filename)來呈現,
並結合正確圖片路徑("/sdcard/DCIM/100MEDIA/"+filename),
這樣該如何正確顯示圖片出來呢?
您好,很抱歉這麼久才回覆您!
刪除哈哈,小黑人這段時間忙著處理專題研究,真不好意思...
根據您的提問小黑人向您解釋,
直接指定的目的為很明確知道要顯示哪一張圖片的作法,
如果圖片名稱為變數的話,就如同您的做法一樣,
宣告變數 : String filename = "001.jpg";
圖片路徑 : "/sdcard/DCIM/100MEDIA/" + filename ;
filename變數可以隨時更變圖片名稱來進行換圖,
filename = "002.jpg" or filename = "003.png"
感謝您的提問! ^^
如果現在要要讀取檔案
回覆刪除但是不知道他是存在內部還是SD卡的話
這樣要怎辦?
您好,根據您的提問小黑人向您解釋,
刪除如果不知道檔案目錄的話,其實可以先用File確認檔案是否存在,
例如: File mFile = new File("檔案路徑"); (先假設是否在SD卡裡做判斷)
mFile.exists() 如果為true的話就代表檔案在SD卡裡,為false就代表在內部或其他地方。
感謝您的提問。 ^^
您好:
回覆刪除想請教您一個問題,我用來開發的手機是SONY 的 EXPERIA-V,我一開始也是先判斷手機是否有安裝SD卡
Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED).奇怪的是不論我有沒有裝SD卡他竟然都給我回來true..
後來我去看了一下他所抓的路徑Environment.getExternalStorageState(),回應的是/storage/sdcard0,可是我的手機記憶卡位置是在/storage/sdcard1呢...請問怎麼會這樣呢..百思不解阿><...
謝謝大大耐心看完...
您好,很抱歉這麼久才回覆您,
刪除根據您的問題小黑人覺得應該是手機本身就有一個內建儲存空間(sdcard0),
但是手機還可以讓使用者再擴增SD-Card,所以就成了另一個儲存空間(sdcard1),
所以不管您有沒有插入SD-Card都有內建本身的儲存空間存在,就都會回傳true,
感謝您的留言!
您好,很抱歉這麼久才回覆您,
回覆刪除根據您的問題小黑人覺得應該是手機本身就有一個內建儲存空間(sdcard0),
但是手機還可以讓使用者再擴增SD-Card,所以就成了另一個儲存空間(sdcard1),
所以不管您有沒有插入SD-Card都有內建本身的儲存空間存在,就都會回傳true,
感謝您的留言!
作者已經移除這則留言。
回覆刪除您好
回覆刪除請問如果我要從SD卡路徑取得excel檔的資料
您認為還需要增加甚麼方法取得我要的資料?
感謝解答!!