首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TextureView onSurfaceTextureAvailable从未打过电话

TextureView onSurfaceTextureAvailable从未打过电话
EN

Stack Overflow用户
提问于 2012-12-11 19:46:59
回答 1查看 5.7K关注 0票数 4

当我的Android应用程序启动时,我试图播放一个splash活动的视频,但我遇到了onSurfaceTextureAvailable接口方法永远不会被调用的问题。

代码如下:

代码语言:javascript
复制
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

代码来自stackoverflow类似的question,看起来他让它像这样工作。

有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2015-04-21 16:50:00

要调用onSurfaceTextureAvailable(),必须启用硬件加速。您可以在AndroidManifast.xml文件中执行此操作

代码语言:javascript
复制
<activity
    android:name="com.example.HomeActivity"
    android:hardwareAccelerated="true" >
</activity>
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13819721

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档