2014-06-10 18 views
16
bir video ekleme

Ben MediaStore, bu yöntemi kullanarak bir görüntüyü saklamak mümkündür aynı şekilde video eklemek çalışıyorum: MediaStore.Video.Media üzerinde hiçbir benzer bir yöntem olmadığına göreMediastore

MediaStore.Images.Media.insertImage(getContentResolver(), imagePath, null, null) 

ne uri döndü

ContentValues values = new ContentValues(); 
values.put(MediaStore.Video.Media.TITLE, "Title1"); 
values.put(MediaStore.Video.Media.MIME_TYPE, "video/mp4"); 
values.put(MediaStore.Video.Media.DATA, videoPath); 
Uri uri = cr.insert(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, values); 

try { 
    OutputStream os = cr.openOutputStream(uri); 
    ... 
    ... 
} (FileNotFoundException e) { 
    cr.delete(uri, null, null); 
} 

şeklinde non-null geçerli: yapmaya çalıştım aşağıda gösterildiği gibi, MediaStore.Video.Media.EXTERNAL_CONTENT_URI bir kayıt eklemek ve sonra hedefe dosyayı kopyalamak oldu, bu doğru görünüyor.

Ancak, cr.openOutputStream(uri); seçildiğinde, FileNotFoundException atılır.

Bu son bit, kaynak koduna bakarak Images.Media.insertImage için yapılana benzer.

Btw, WRITE_EXTERNAL_STORAGE iznine sahibim. Ayrıca, ben 4.3 & 4.4 test ediyorum.

+1

Aynı problem, 4.4.4 ile Nexus 5 cihazımda da var. – Erik

+1

herhangi bir çözüm insanlar? – ARO

+1

herhangi bir çözüm buldunuz mu? –

cevap

1

Eğer bu kod parçasından elde Ne:

ContentValues values = new ContentValues(); 
values.put(MediaStore.Video.Media.TITLE, "Title1"); 
values.put(MediaStore.Video.Media.MIME_TYPE, "video/mp4"); 
values.put(MediaStore.Video.Media.DATA, videoPath); 
Uri uri = cr.insert(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, values); 

kamu Uri olduğunu. Daha fazla bilgi edinmek için, API 19 (KitKat) 'den Media erişiminin değiştiğinden beri görebileceğiniz here bulabilirsiniz.

Android'in kaynak kodunu inceleyerek, database video schema and columns numaralı telefonu görebilirsiniz. sütunu vardır ki, MediaColumns uzanacak VideoColumns:

MediaStore.MediaColumns.DATA 

olarak tarif:

Path to the file on disk.

Yani kamu Uri gerçek Uri almak gerekir. Amacıyla

bu kodu çalıştırın: uri olduğunu

getDataColumn(context, uri, null, null); 

senin kamu Uri ve benzeri işlev getDataColumn görünüm:

public static String getDataColumn(Context context, Uri uri, String selection, 
            String[] selectionArgs) { 

    Cursor cursor = null; 
    final String column = MediaStore.MediaColumns.DATA; 
    final String[] projection = { 
      column 
    }; 

    try { 
     cursor = context.getContentResolver().query(uri, projection, selection, selectionArgs, 
       null); 
     if (cursor != null && cursor.moveToFirst()) { 
      final int column_index = cursor.getColumnIndexOrThrow(column); 
      return cursor.getString(column_index); 
     } 
    } finally { 
     if (cursor != null) 
      cursor.close(); 
    } 
    return null; 
} 

Bu kod aFileChooser gelir ve fonksiyon getPath