首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将MediaController放在TextureView中

如何将MediaController放在TextureView中
EN

Stack Overflow用户
提问于 2015-06-01 02:32:49
回答 1查看 2.1K关注 0票数 0

我试图在我的纹理视图中放置一个媒体控制器,但是我总是错误地说

代码语言:javascript
运行
复制
E/MediaPlayer﹕ Should have subtitle controller already set

这是我的密码

代码语言:javascript
运行
复制
    @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,它也不会出现。我一直在寻找解决方案,但我只看到音频文件。有谁可以帮我?非常感谢..。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-01 04:19:36

  • 实现MediaController.MediaPlayerControl
  • 覆盖所需的函数
  • 通过以下代码显示控制器: MediaController videoController =新MediaController(getActivity());videoController.setMediaPlayer(This);//您实现MediaPlayerControl videoController.setAnchorView(MTextureView)的活动;videoController.setEnabled(真);videoController.show(); 玩得开心!
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30564875

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档