看板 AndroidDev 關於我們 聯絡資訊
※ 引述《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