2015-06-01 3 views
0

Я пытаюсь поставить контроллер медиа на мой взгляд текстуры, но у меня всегда есть ошибки, говоряКак поставить MediaController в TextureView

E/MediaPlayer﹕ Should have subtitle controller already set 

здесь мой код

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.texture_video); 

    textureView = (TextureView) findViewById(R.id.textureView); 
    listView = (ListView) findViewById(R.id.list); 

    . 
    . 
    . 

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
      android.R.layout.simple_list_item_1, android.R.id.text1, values); 


    listView.setAdapter(adapter); 
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> parent, View view, 
           int position, long id) { 

      if (position == 0) { 
       onDestroy(); 
       FILE_NAME = "test1.mp4"; 
       textureView.setSurfaceTextureListener(VideoAssetActivity.this); 
       onSurfaceTextureAvailable(textureView.getSurfaceTexture(), view.getWidth(), view.getHeight()); 
      } else if (position == 1) { 
       onDestroy(); 
       FILE_NAME = "test2.mp4"; 
       textureView.setSurfaceTextureListener(VideoAssetActivity.this); 
       onSurfaceTextureAvailable(textureView.getSurfaceTexture(), view.getWidth(), view.getHeight()); 
      } else if (position == 2) { 
       onDestroy(); 
       FILE_NAME = "test3.mp4"; 
       textureView.setSurfaceTextureListener(VideoAssetActivity.this); 
       onSurfaceTextureAvailable(textureView.getSurfaceTexture(), view.getWidth(), view.getHeight()); 
      } else if (position == 3) { 
       onDestroy(); 
       FILE_NAME = "test4.mp4"; 
       textureView.setSurfaceTextureListener(VideoAssetActivity.this); 
       onSurfaceTextureAvailable(textureView.getSurfaceTexture(), view.getWidth(), view.getHeight()); 
      } 
     } 

    }); 
    textureView.setSurfaceTextureListener(this); 

} 

@Override 
protected void onDestroy() { 
    super.onDestroy(); 
    if (mMediaPlayer != null) { 
     mMediaPlayer.stop(); 
     mMediaPlayer.release(); 
     mMediaPlayer = null; 
    } 
} 

@Override 
public void onSurfaceTextureAvailable(SurfaceTexture surfaceTexture, int i, int i2) { 
    Surface surface = new Surface(surfaceTexture); 

    try { 
     AssetFileDescriptor afd = getAssets().openFd(FILE_NAME); 
     mMediaPlayer = new MediaPlayer(); 
     mMediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength()); 
     mMediaPlayer.setSurface(surface); 
     mMediaPlayer.setLooping(true); 
     mMediaPlayer.prepareAsync(); 

     onSurfaceTextureUpdated(surfaceTexture); 

     mMediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
      @Override 
      public void onPrepared(MediaPlayer mediaPlayer) { 
       // set up media controller 
       videoController = new MediaController(VideoAssetActivity.this); 
       videoController.setAnchorView(textureView); 
       videoController.setPadding(0, 0, 0, 0); 

        mediaPlayer.start(); 

      } 
     }); 

    } catch (IllegalArgumentException e) { 
     Log.d(TAG, e.getMessage()); 
    } catch (SecurityException e) { 
     Log.d(TAG, e.getMessage()); 
    } catch (IllegalStateException e) { 
     Log.d(TAG, e.getMessage()); 
    } catch (IOException e) { 
     Log.d(TAG, e.getMessage()); 
    } 


} 

мой проблема в том, что я уже установил контроллер, но он не появляется, даже если я играю другой mp4. Я искал решение, но вижу только аудиофайл. Может ли кто-нибудь мне помочь? Большое спасибо ..

ответ

2
  • Реализовать MediaController.MediaPlayerControl
  • Override необходимы функции
  • Показать контроллер по этому коду:

    MediaController videoController = new MediaController(getActivity()); 
    videoController.setMediaPlayer(this);//your activity which implemented MediaPlayerControl 
    videoController.setAnchorView(mTextureView); 
    videoController.setEnabled(true); 
    videoController.show(); 
    

    Удачи!

+1

Каковы функции, которые необходимо переопределить? –

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