歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android視頻開發簡易方法

Android視頻開發簡易方法

日期:2017/3/1 11:12:35   编辑:Linux編程

一些簡易的視頻開發代碼。


一、視頻的讀取,顯示

安卓提供了一個VideoView類,用起來很方便。如果僅僅是播放視頻,這個類足夠用了。但是擴展性不好。

它繼承自SurfaceView並實現了MediaPlayerControl接口,並封裝了一個MediaPlayer對象。如果有興趣可以仿照他自己實現一個,方便擴展。

文章有很多,不贅述了。

視頻讀取最麻煩是縮略圖的顯示。尤其是在2.2之前。2.2提供了一個ThumbnailUtils類,可以方便的取到縮略圖,但是之前的版本沒有。需要手動取。

不多說了,上代碼。

  1. String whereClause = MediaStore.Video.Media.DATA + " = '" + "/sdcard/DCIM/Camera/2011-03-12_11-07-40_252.3gp" + "'";
  2. Cursor cursor = getContentResolver().query(MediaStore.Video.Media.EXTERNAL_CONTENT_URI,
  3. new String[] { MediaStore.Video.Media._ID }, whereClause, null, null);
  4. if (cursor == null || cursor.getCount() == 0) {
  5. return;
  6. }
  7. cursor.moveToFirst();
  8. int videoId = cursor.getInt(cursor.getColumnIndex(MediaStore.Video.Media._ID));
  9. BitmapFactory.Options options = new BitmapFactory.Options();
  10. options.inDither = false;
  11. options.inPreferredConfig = Bitmap.Config.ARGB_8888;
  12. Bitmap bm = Thumbnails.getThumbnail(getContentResolver(), videoId, Images.Thumbnails.MINI_KIND, options);
2.2則做了封裝。

二、視頻的保存

保存視頻需要把視頻保存到媒體庫中。代碼:

  1. ContentValues values = new ContentValues(3);
  2. long current = System.currentTimeMillis();
  3. values.put(MediaStore.Video.Media.TITLE, "video" + f.getName());
  4. values.put(MediaStore.Video.Media.DATE_ADDED, (int) (current / 1000));
  5. values.put(MediaStore.Video.Media.MIME_TYPE, "video/3gpp");
  6. values.put(MediaStore.Video.Media.DATA, f.getAbsolutePath());
  7. ContentResolver contentResolver = getContentResolver();
  8. Uri base = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
  9. Uri newUri = contentResolver.insert(base, values);
  10. sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, newUri));
Copyright © Linux教程網 All Rights Reserved