4

I try to play a video for a splash Activity when my Android app starts and I have the problem that onSurfaceTextureAvailable interface method never get called.

Here is the code:

public class HomeActivity extends Activity implements TextureView.SurfaceTextureListener,
        MediaPlayer.OnBufferingUpdateListener, OnCompletionListener,
        MediaPlayer.OnPreparedListener, MediaPlayer.OnVideoSizeChangedListener {

    private MediaPlayer videoMediaPlayer;
    private TextureView videoPreview;
    private Bundle extras;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        videoPreview = new TextureView(this);
        videoPreview.setSurfaceTextureListener(this);
        extras = getIntent().getExtras();
        setContentView(videoPreview);
    }

    @Override
    public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) {
        Surface s = new Surface(surface);
        Log.d("HOME", "onSurfaceTextureAvailable");
        try {
            videoMediaPlayer= new MediaPlayer();
            Uri video = Uri.parse("android.resource://" + getPackageName() + "/"
                    + R.raw.intro_video);
            videoMediaPlayer.setDataSource(getApplicationContext(), video);
            videoMediaPlayer.setSurface(s);
            videoMediaPlayer.prepare();
            videoMediaPlayer.setOnBufferingUpdateListener(this);
            videoMediaPlayer.setOnCompletionListener(this);
            videoMediaPlayer.setOnPreparedListener(this);
            videoMediaPlayer.setOnVideoSizeChangedListener(this);
            videoMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
            videoMediaPlayer.start();
        } catch (IllegalArgumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SecurityException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalStateException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

// Other stuff

The code is from stackoverflow similar question which it seems that he got it working like this.

Any advice?

Community
  • 1
  • 1
George Taskos
  • 8,324
  • 18
  • 82
  • 147
  • i Hade the same Problem check my answer .. i hope it helps http://stackoverflow.com/questions/16693194/textureview-onsurfacetextureavailable-never-called-inside-relativelayout-inside/16897762#16897762 – Rany Ishak Jun 03 '13 at 13:23

1 Answers1

6

to onSurfaceTextureAvailable() be called, hardware acceleration must be enabled. you can do this in AndroidManifast.xml file

<activity
    android:name="com.example.HomeActivity"
    android:hardwareAccelerated="true" >
</activity>
sulu.dev
  • 1,159
  • 1
  • 11
  • 16