Note that there are some explanatory texts on larger screens.

plurals
  1. POandroid how to resize video width and height in surface view for media player
    primarykey
    data
    text
    <p><strong>Want to resize the video in surface view</strong></p> <p>I am Playing a video in Media Player with using a Surface view and holder for video...</p> <p><em>// but on implementing MediaPlayerControl on some devices say Micromax, iball, Akash tablet it gives error of abstract method not available as tracked by ACRA bug tracking.</em> </p> <p>Now I want to have solution of mentioned problems:</p> <ul> <li><p>How to get media player controls active in all devices wihtout crashing due to abstract method as for media controller in some devices.</p></li> <li><p>How can I resize the surface view of video.</p></li> </ul> <p>The code is working f9 on <strong>samsung galaxy gt p1000 OS 2.2</strong> and some cheaper device WorldTeck etc.</p> <p>But on <strong>Creative ziio 7 OS version is 2.2.1 (480*800)</strong> <strong>resolution density is 160 dpi</strong> video seems to be zoomed and gets cutt off from the edges.</p> <p>The code is shown below:</p> <pre><code>/* Media Player Control is commented due to force close in some devices say *micromax,Creative ziio, akash etc */ public class VideoViewerActivity extends Activity implements OnBufferingUpdateListener, OnCompletionListener, OnPreparedListener, OnVideoSizeChangedListener, SurfaceHolder.Callback { // implements ERROR in some devices , MediaPlayerControl private static final String TAG = "MediaPlayerDemo"; private int mVideoWidth; private int mVideoHeight; private MediaPlayer mMediaPlayer; private SurfaceView mPreview; private SurfaceHolder holder; private String path = ""; private Bundle extras; private static final String MEDIA = "media"; private static final int LOCAL_AUDIO = 1; private static final int STREAM_AUDIO = 2; private static final int RESOURCES_AUDIO = 3; private static final int LOCAL_VIDEO = 4; private static final int STREAM_VIDEO = 5; private boolean mIsVideoSizeKnown = false; private boolean mIsVideoReadyToBePlayed = false; /* ERROR In Abstract method implementation in the other devices */ // private MediaController mediaController; private Context context; private final Handler handler = new Handler(); /** * * Called when the activity is first created. */ @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.video_layout); context = this; path = getIntent().getExtras().getString("media"); Log.v("arpit", "path " + path); mPreview = (SurfaceView) findViewById(R.id.surfaceview1); holder = mPreview.getHolder(); holder.addCallback(this); holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); extras = getIntent().getExtras(); } private void playVideo() { doCleanUp(); try { // Create a new media player and set the listeners File f = new File(path); // FileInputStream in = new FileInputStream(f); RandomAccessFile randomAccessFile = new RandomAccessFile(f, "r"); // randomAccessFile.skipBytes(1024); FileDescriptor fileDescriptor = randomAccessFile.getFD(); mMediaPlayer = new MediaPlayer(); mMediaPlayer.setDataSource(fileDescriptor, Constant.key1.length + Data.deviceID.length(), f.length()); mMediaPlayer.setDisplay(holder); mMediaPlayer.prepare(); mMediaPlayer.setOnBufferingUpdateListener(this); mMediaPlayer.setOnCompletionListener(this); mMediaPlayer.setOnPreparedListener(this); mMediaPlayer.setOnVideoSizeChangedListener(this); mMediaPlayer.setScreenOnWhilePlaying(true); // mediaController = new MediaController(this); mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); } catch (Exception e) { Log.e(TAG, "error: " + e.getMessage(), e); Toast.makeText(context, "supported video was not found", Toast.LENGTH_SHORT).show(); finish(); } } public void onVideoSizeChanged(MediaPlayer mp, int width, int height) { Log.v(TAG, "onVideoSizeChanged called"); if (width == 0 || height == 0) { Log.e(TAG, "invalid video width(" + width + ") or height(" + height + ")"); return; } mIsVideoSizeKnown = true; mVideoWidth = width; mVideoHeight = height; if (mIsVideoReadyToBePlayed &amp;&amp; mIsVideoSizeKnown) { startVideoPlayback(); } } public void surfaceDestroyed(SurfaceHolder surfaceholder) { Log.d(TAG, "surfaceDestroyed called"); } public void surfaceCreated(SurfaceHolder holder) { Log.d(TAG, "surfaceCreated called"); playVideo(); } private void doCleanUp() { mVideoWidth = 0; mVideoHeight = 0; mIsVideoReadyToBePlayed = false; mIsVideoSizeKnown = false; } private void startVideoPlayback() { Log.v(TAG, "startVideoPlayback"); //also tried and used the below line but nothing good // holder.setFixedSize(480, 800); holder.setFixedSize(mVideoWidth, mVideoHeight); mMediaPlayer.start(); } } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload