为什么android VideoView无法在电视模拟器上播放视频,但它在移动模拟器中播放

时间:2016-03-14 20:41:37

标签: android android-emulator android-mediaplayer android-videoview android-tv

我想知道我的代码有什么问题,或者我错过了什么,但我看不到......

当我试图在电视模拟器中播放我的任何视频总是说

无法播放此视频

但是相同的代码可以在手机模拟器和我自己的手机中播放视频。我是瞎子......我不知道问题出在哪里?

我的代码

public class PlayerActivity extends AppCompatActivity {
PlayList mPlayList;
MediaPlayerController mMediaPlayerController;
VideoView videoHolder;
Button mButtonLoadVideos;
Button mButtonPlayAll;

WherePlaysAPI wherePlays =
        RestBuilder.createEndpoint().create(WherePlaysAPI.class);


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_player);
    mPlayList = new PlayList(new ArrayList<MediaItem>());

    setupLoad();
    setupPlay();
    setupVideo();
}

private void setupVideo() {
    videoHolder = (VideoView) findViewById(R.id.idPlayer);
    videoHolder.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
        @Override
        public void onCompletion(MediaPlayer mp) {
            play();
        }
    });
}

private void setupPlay() {
    mButtonPlayAll = (Button) findViewById(R.id.buttonPlayAll);
    mButtonPlayAll.setEnabled(false);
    mButtonPlayAll.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mMediaPlayerController.next();
            Uri video = Uri.parse(mMediaPlayerController.current().getMrl());
            videoHolder.setVideoURI(video);
            videoHolder.start();
        }
    });
}

private void setupLoad() {
    mButtonLoadVideos = (Button) findViewById(R.id.buttonLoadMediaItems);
    mButtonLoadVideos.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            new LoadPlayListTask(v.getContext()).execute();
        }
    });
}

protected void play() {
    mMediaPlayerController.next();
    Uri video = Uri.parse(mMediaPlayerController.current().getMrl());
    videoHolder.setVideoURI(video);
    videoHolder.start();
}

class LoadPlayListTask extends AsyncTask<Void, Void, Void> {

    ProgressDialog progressDialog;
    Context context;

    public LoadPlayListTask(Context context) {
        this.context = context;
    }

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        progressDialog = new ProgressDialog(context);
        progressDialog.setTitle("Loading ...");
        progressDialog.show();
    }

    @Override
    protected Void doInBackground(Void... params) {
        PlayListResponse playList = wherePlays.getPlayerList(1);

        for (MediaItem item : playList.getPlaylist()) {
            mPlayList.addMediaItem(item);
            publishProgress();
        }
        return null;
    }

    @Override
    protected void onProgressUpdate(Void... values) {
        progressDialog.setTitle("Loading..." + String.valueOf(mPlayList.getPlaylists().size()));
        if (mPlayList.getPlaylists().size() >= 1) {
            mButtonPlayAll.setEnabled(true);
        }
    }

    @Override
    protected void onPostExecute(Void aVoid) {
        progressDialog.dismiss();
        mMediaPlayerController = MediaPlayerController.getMediaPlayer(mPlayList);
    }
}

class UpdateMediaItemPlays extends AsyncTask<Integer, Void, Void> {

    @Override
    protected Void doInBackground(Integer... params) {
        wherePlays.updateMediaItemPlays(1, params[0], "");
        return null;
    }
}
}

0 个答案:

没有答案