一個android記事本的學習過程記錄! (三)

上一篇中,咱們實現了在保存文字後,將保存的數據顯示到主頁的ListView之中,說明保存文本的功能實現了。如今咱們開始實現保存 圖片和視頻的功能;因爲保存圖片和和視頻與保存文本不同,他們不能存入到數據庫中,因此咱們只要將圖片或視頻的絕對路徑保存到數據庫中便可,顯示的時候經過路徑找到圖片便可;java

1、在第一篇中,咱們進入記錄圖片的界面是使用,android

case R.id.img:
	intent.putExtra("flag", "img");
	startActivity(intent);
	break;

則進入addcontent類中,經過接受intent傳過來的flag實現記錄圖片絕對路徑的功能數據庫

if(val.equals("img")){
		c_img.setVisibility(View.VISIBLE); //設置控件可見
		c_video.setVisibility(View.GONE);
		//使用照相機拍照
		Intent i_img=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
		//經過Environment得到SD卡中的生成圖片的絕對路徑
		phoneFile=new File(Environment.getExternalStorageDirectory()
				.getAbsoluteFile()+"/"+getTime()+".jpg");
		//將生成的圖片放置到指定的路徑之下;
		i_img.putExtra(MediaStore.EXTRA_OUTPUT, 
				Uri.fromFile(phoneFile));
		startActivityForResult(i_img, 1);
	}

因爲在只記錄文本的時候,ImageView和VideoView是隱藏的,當記錄圖片的時候,就使ImageView設置爲顯示;VideoView還設置爲隱藏;緩存

這裏有一個新的知識點;就是經過Intent去實現一些調用系統硬件的功能;ide

Intent i_img=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

MediaStore這個類是android系統提供的一個多媒體數據庫,android中多媒體信息均可以從這裏提取。這個MediaStore包括了多媒體數據庫的全部信息,包括音頻,視頻和圖像,android把全部的多媒體數據庫接口進行了封裝,全部的數據庫不用本身進行建立spa

Environment 經常使用方法: 
方法:getDataDirectory() 
解釋:返回 File ,獲取 Android 數據目錄。

方法:getDownloadCacheDirectory() 
解釋:返回 File ,獲取 Android 下載/緩存內容目錄。

方法:getExternalStorageDirectory() 
解釋:返回 File ,獲取外部存儲目錄即 SDCard

方法:getExternalStoragePublicDirectory(String type) 
解釋:返回 File ,取一個高端的公用的外部存儲器目錄來擺放某些類型的文件

方法:getExternalStorageState() 
解釋:返回 File ,獲取外部存儲設備的當前狀態

方法:getRootDirectory() 
解釋:返回 File ,獲取 Android 的根目錄

startActivityForResult(i_img, 1);  使用這個方法打開新的activity後,當新的activity關閉後,會返回一個結果值;code

咱們經過這個方法,獲得新的activity關閉後返回的結果值;orm

@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data)
	{
		// TODO Auto-generated method stub
		super.onActivityResult(requestCode, resultCode, data);
		//返回1的時候,是將圖片顯示到ImageView中;
		if(requestCode==1){
			Bitmap bitmap=BitmapFactory
					.decodeFile(phoneFile.getAbsolutePath());
			c_img.setImageBitmap(bitmap);
		}
		//返回2的時候是將新拍的視頻的放入到VideoView中,而且開始播放;
		if(requestCode==2){
			c_video.setVideoURI(Uri.fromFile(vedioFile));
			c_video.start();
			
		}
			
	}

這樣拍攝的照片就顯示到咱們的窗口中了;視頻

接下來是保存視頻的部分,跟保存圖片的狀況差很少;接口

if(val.equals("video")){
		c_img.setVisibility(View.GONE);
		c_video.setVisibility(View.VISIBLE);
	
		Intent i_vedio=new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
		vedioFile=new File(Environment.getExternalStorageDirectory()
				.getAbsoluteFile()+"/"+getTime()+".mp4");
		i_vedio.putExtra(MediaStore.EXTRA_OUTPUT, 
				Uri.fromFile(vedioFile));
		startActivityForResult(i_vedio, 2);
	}

一樣只保存視頻文件的路徑;拍攝完畢後界面顯示放拍的視頻;同時均可以在文本編輯框繼續記錄文字;

這樣在點擊保存按鈕下,將信息保存到數據庫中。這樣就完成了圖片或視頻的保存;

相關文章
相關標籤/搜索