MediaStore类向存储在设备上(无论是内部存储器还是外部存储器)的媒体提供了一个接口,MediaStore还提供了API来简化操作媒体。这些API中包含在设备上搜索特定类型的媒体的机制,用于将音频和视频录制到存储器的Intent,及建立播放列表的方式。下面是使用Intent来录制音频和拍照的简单示例。
public class MediaStoreTest extends Activity {
private static final String TAG = "MediaStoreTest";
private static final int RECORD_SOUND = 0;
private static final int IMAGE_CAPTURE = 1;
private Button btnRecord;
private Button btnPhoto;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btnRecord = (Button)findViewById(R.id.btnRecord);
btnRecord.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
startRecording();
}
});
btnPhoto = (Button)findViewById(R.id.btnPhoto);
btnPhoto.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
takePhoto();
}
});
}
public void startRecording() {
Intent intent = new Intent("android.provider.MediaStore.RECORD_SOUND");
startActivityForResult(intent, RECORD_SOUND);
}
public void takePhoto() {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
String strFilePath = Environment.getExternalStorageDirectory() + "/take_photo/" + getDate() + ".jpeg";
Log.d(TAG, "strFilePath:" + strFilePath);
Uri uri = Uri.fromFile(new File(strFilePath));
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri); // 设置照片的保存路径
startActivityForResult(intent, IMAGE_CAPTURE);
}
/**
* 获取系统时间
* @return
*/
public static String getDate(){
Calendar ca = Calendar.getInstance();
int year = ca.get(Calendar.YEAR); // 获取年份
int month = ca.get(Calendar.MONTH); // 获取月份
int day = ca.get(Calendar.DATE); // 获取日
int hour = ca.get(Calendar.HOUR); // 获取小时
int minute = ca.get(Calendar.MINUTE); // 获取分
int second = ca.get(Calendar.SECOND); // 获取秒
int millisecond = ca.get(Calendar.MILLISECOND); // 获取毫秒
String date = "" + year + (month + 1 ) + day + hour + minute + second + millisecond;
return date;
}
文章摘自 Android MediaStore用法示例