用TextureView + MediaPlayer实现,本身性能没有问题,看一下你的代码吧,可能是有的地方没写好

解决方案 »

  1.   


    我知道是有些地方没写好,但是还没有找到原因啊,第一次接触多媒体类的开发,有点晕啊,请问您做过类似的么?
    public void onScrollStateChanged(AbsListView view, int scrollState) {
    // TODO Auto-generated method stub
     View firstItem = views.get(Integer
                         .valueOf(firstVisibleIndex));
     View firstItem1 = views.get(Integer
                         .valueOf(firstVisibleIndex)+1);
              if (scrollState == SCROLL_STATE_IDLE) {
                     
                      if (firstItem != null) {
                              int[] location = new int[2];
                              firstItem.getLocationOnScreen(location);
                              int x = location[0];
                              int y = location[1];
                              System.out.println("====== x: " + x + "  y:" + y);
                             com.weishi.view.VideoPlayTextureView textureView = (VideoPlayTextureView) firstItem.findViewById(R.id.videoview);
                        ProgressBar loading=(ProgressBar) firstItem.findViewById(R.id.loading);
                        ImageView video=(ImageView) firstItem.findViewById(R.id.video_cover_default);
                        ImageView videoPlay=(ImageView) firstItem.findViewById(R.id.play_controller);
                        if (textureView.isAvailable()) {
                                      textureView.prepare(list.get(3));//后续处理,标记
                                  loading.setVisibility(View.GONE);
                                  Log.e("position2", "______________+++++++"+Integer.valueOf(firstVisibleIndex));
                              video.setVisibility(View.GONE);
                              if (textureView.getMediaState()==MediaState.PLAY) {
                 
                  }else {
                  textureView.play();
                 
                  }
                              }
      

  2.   

    quote]textureView.setSurfaceTextureListener(new SurfaceTextureListener() {

    @Override
    public void onSurfaceTextureUpdated(SurfaceTexture surface) {
    // TODO Auto-generated method stub

    }

    @Override
    public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width,
    int height) {
    // TODO Auto-generated method stub

    }

    @Override
    public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) {
    // TODO Auto-generated method stub
    return false;
    }

    @Override
    public void onSurfaceTextureAvailable(SurfaceTexture surface, int width,
    int height) {
    // TODO Auto-generated method stub
                 textureView.prepare(list.get(3));
                 textureView.play();;
    }
    });[/code]
    这里的回调为什么接收不到呢?
      

  3.   

    楼主现在开发的怎么样了,我现在一个项目也是类似需求,也用了TextureView放在listView的item里面,但是TextureView好像没有加载,onSurfaceTextureAvailable方法触发不了,楼主找到原因了么。。
      

  4.   

    我的大致功能实现了。。TextureView要在一定条件下去展示;例如
    if (textureView.isAvailable()) {
    textureView.prepare(getPath(FileName));
    loading.setVisibility(View.GONE);
    video.setVisibility(View.GONE);
    textureView.getMediaPlayer().setOnPreparedListener(new OnPreparedListener() {
    @Override
    public void onPrepared(MediaPlayer mp) {
    Log.e("加入的mediaplayer","位置" + 0 + "mediaplayer"+ textureView.getMediaPlayer());
    textureView.play();
    videoPlay.setVisibility(View.GONE);
    }
    });
      

  5.   

    楼主,我最近也在学习类似的东西,看了你的帖子很感兴趣,不知道你的实现了没?能不能提供一份demo,非常感谢!
    邮箱:[email protected]
      

  6.   

    可以分享一下你的Demo?  [email protected]  谢谢!
      

  7.   

    [email protected],求分享demo,已经卡住了快一星期了,求大神解救
      

  8.   

    [email protected]    求大大分享  或者 加QQ 调教下小弟