※ 引述《issuemylove (skill)》之銘言:
: 各位大大好
: 我想在手機上播放影片
: 原先使用了VideoView
: 但是 VideoView 無法決定影片大小
: 查到了 SurfaceView + MediaPlayer 的合體技可以決定影片大小
: 以下是程式碼
: SurfaceView surfaceView = (SurfaceView)findViewById(R.id.surfaceView1);
: SurfaceHolder surfaceHolder = surfaceView.getHolder();
: surfaceHolder.setFixedSize(100, 100);
: surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
: mediaPlayer = new MediaPlayer();
: mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
: mediaPlayer.setDisplay(surfaceHolder);
: try
: {
: mediaPlayer.setDataSource(x);
: //String x = "android.resource://packageName/" + R.raw.source;
: mediaPlayer.prepare();
這個時候你的serface可能還沒有ready,一般寫法是
設定MediaPlayer.setOnPreparedListener()然後把
start丟進onPrepared這個callback裡面。
這個在API Demo裡面有範例
: mediaPlayer.start();
: }
: catch (Exception e){}
: 以下是錯誤訊息是 http://ppt.cc/tnUZ
: 我有查到資料說
: "在不合適的狀態下使用prepare()會抛出IllegalStateException異常
: 但是我的程式碼都是看範例code的> <
: 我覺得很奇怪 不知道有無大大可以提供意見或解法 Q_Q
: 非常感謝!
--
Beware of bugs in the above code;
I have only proved it correct, not tried it.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.32.193.107