2015-01-07 3 views
2

это код для моего просмотра видеореализация просмотр видео в приложении для Android

пакета com.example.videoviewsample;

import android.app.Activity; 
import android.content.Intent; 
import android.content.res.Configuration; 
import android.database.Cursor; 
import android.media.MediaMetadataRetriever; 
import android.net.Uri; 
import android.provider.MediaStore; 
import android.view.Menu; 
import android.widget.MediaController; 
import android.widget.VideoView; 

    public class VideoViewSample extends Activity 
{ 
    private VideoView mVideoView; 

    private MediaController mController; 

    MediaMetadataRetriever mMetadataRetriever; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     mVideoView = (VideoView) findViewById(R.id.myplaysurface); 

     mMetadataRetriever = new MediaMetadataRetriever(); 

     Intent intent = new Intent(); 

     intent.setType("video/*"); 
     intent.setAction(Intent.ACTION_GET_CONTENT); 

     startActivityForResult(Intent.createChooser(intent, "Video File to Play"), 0); 
    } 

    @Override 
    public void onConfigurationChanged(Configuration newConfig) 
    { 
     super.onConfigurationChanged(newConfig); 
    } 

    public void startPlayback(String videoPath) 
    { 
     mMetadataRetriever.setDataSource(videoPath); 

     Uri uri = Uri.parse(videoPath); 
     mVideoView.setVideoURI(uri); 

     mController = new MediaController(this, false); 
     mVideoView.setMediaController(mController); 
     mVideoView.requestFocus(); 
     mVideoView.start(); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) 
    { 
     getMenuInflater().inflate(R.menu.video_view_sample, menu); 

     return true; 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) 
    { 
     if (requestCode == 0) 
     { 
      if (resultCode == RESULT_OK) 
      { 
       Uri sourceUri = data.getData(); 
       String source = getPath(sourceUri); 

       startPlayback(source); 
      } 
     } 
    } 

    public String getPath(Uri uri) 
    { 
     Cursor cursor = getContentResolver().query(uri, null, null, null, null); 

     if (cursor == null) 
     { 
      return uri.getPath(); 
     } else 
     { 
      cursor.moveToFirst(); 

      int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA); 

      return cursor.getString(idx); 
     }**strong text**`enter code here` 
    } 
} 

LogCat Ошибка:

01-07 19:46:45.231: E/AndroidRuntime(30303): Process: 
com.example.videoviewsample, PID: 30303 
01-07 19:46:45.231: E/AndroidRuntime(30303): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=0, result=-1, data=Intent { dat=content://com.android.providers.media.documents/document/video:31385 flg=0x1 }} to activity {com.example.videoviewsample/com.example.videoviewsample.VideoViewSample}: java.lang.IllegalStateException: Couldn't read row 0, col -1 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it. 

ответ

0

Как ваш LogCat ошибки трассировки говорит

Couldn't read row 0, col -1 from CursorWindow 

означает, что getColumnIndex() не может найти указанный столбец в Cursor и -1 был возвращен как индекс столбца.

Проверьте правильность вашего имени колонки, указанному в поле «cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA);».

EDIT

Если вы пытаетесь воспроизвести видео, то почему вы используете MediaStore.Images.ImageColumns.DATA. Я не уверен, но не кажется правильным. Разве это не должно быть что-то вроде MediaStore.Video.Media.DATA?

Используйте его как этот

String[] col = { MediaStore.Video.Media.DATA }; 
Cursor cursor = getContentResolver().query(uri, col, null, null, null); 
+0

я не использую database.this моя одна и единственная деятельность в приложении. – Sachin

+0

Ну и в таком случае имя столбца, которое вы передаете в курсоре распознавателя контента, определенно неверно. – Rohit5k2

+0

Пожалуйста, см. Мое редактирование, если это поможет. – Rohit5k2

Смежные вопросы