Quello che voglio fare è Mostrare un'immagine di sfondo su SurfaceView prima di iniziare a riprodurre video.visualizza l'errore "[SurfaceView] connetti: già connesso" se disegno una bitmap come sfondo di SurfaceView e poi riproduco video
- Ho cercato di disegnare un'immagine jpeg come sfondo di SurfaceView. Ha funzionato.
- Ho anche provato a riprodurre un video su SurfaceView. Ha funzionato anche.
Ma, quando ho provato a disegnare l'immagine jpeg come sfondo di Surface nella funzione surfaceCreated e quindi riprodurre un video. Ho ricevuto l'errore "[SurfaceView] connetti: già connesso".
Qualche idea? Grazie.
Ecco il codice parziale
@Override
public void surfaceCreated(SurfaceHolder holder) {
try {
Bitmap background = BitmapFactory.decodeResource(getResources(), R.drawable.pic1);
float scale = (float) background.getHeight()/(float)mPreview.getHeight();
int newWidth = Math.round(background.getWidth()/scale);
int newHeight = Math.round(background.getHeight()/scale);
mScaledBitmap = Bitmap.createScaledBitmap(background, newWidth, newHeight, true);
Canvas canvas = mHolder.lockCanvas();
canvas.drawBitmap(mScaledBitmap, 0, 0, null);
mHolder.unlockCanvasAndPost(canvas);
} catch (Exception e)
{}
// initialize mediaplayer
try {
mMediaPlayer = new MediaPlayer();
mMediaPlayer.setDataSource("/sdcard/Movies/2.mp4");
mMediaPlayer.setDisplay(mHolder);
mMediaPlayer.setLooping(true);
mMediaPlayer.prepare();
mMediaPlayer.setOnPreparedListener(this);
mMediaPlayer.setOnCompletionListener(this);
} catch (IOException e) {
e.printStackTrace();
Log.e(TAG, "error: " + e.getMessage(), e);
} catch (Exception e) {
e.printStackTrace();
Log.e(TAG, "error: " + e.getMessage(), e);
}
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
// TODO Auto-generated method stub
Log.i(TAG, "surfaceChanged(w="+ width + ", h=" + height);
mSurfaceWidth = width;
mSurfaceHeight = height;
mVideoWidth = mMediaPlayer.getVideoWidth();
mVideoHeight = mMediaPlayer.getVideoHeight();
Log.i(TAG, "video size w=" + mVideoWidth + ", h=" + mVideoHeight +")");
}
@Override
public void onPrepared(MediaPlayer mp) {
// TODO Auto-generated method stub
Log.i(TAG, "onPrepared");
mMediaPlayer.start();
}