android TextureView有聲音沒畫面&onSurfaceTextureAvailable沒調用

如題,這兩個問題其實是同一個問題,爲什麼這麼說呢?因爲之前獲取SurfaceTexture是在onSurfaceTextureAvailable接口裏操作的,既然onSurfaceTextureAvailable沒回調,獲取的SurfaceTexture爲空,自然沒畫面了。

在我的項目升級targetSdkVersion到29之後就會出現,我並不清楚onSurfaceTextureAvailable接口爲什麼不會執行,不過改完代碼後不妨礙項目正常運行就可以了。

查了資料都說要開啓硬件加速:android:hardwareAccelerated="true"

卵用沒有。

反正在我的小米手機android 10系統上,完全沒有效果。

但是調試發現,除了onSurfaceTextureAvailable這個接口沒響應,其他接口是正常的,例如onSurfaceTextureUpdated,這就足夠了,從onSurfaceTextureUpdated拿SurfaceTexture也一樣

@Override
    public void onSurfaceTextureAvailable(SurfaceTexture surfaceTexture, int width, int height) {
        //不再從這裏獲取到surface
        //surface = new Surface(surfaceTexture);
    }

    @Override
    public void onSurfaceTextureSizeChanged(SurfaceTexture surfaceTexture, int width, int height) {
        
    }

    @Override
    public boolean onSurfaceTextureDestroyed(SurfaceTexture surfaceTexture) {
        if (surface != null) {
            surface.release();
        }
        return false;
    }

    @Override
    public void onSurfaceTextureUpdated(SurfaceTexture surfaceTexture) {
        if (surface == null) {
            surface = new Surface(surfaceTexture);
        }
    }

後續再調用mMediaPlayer.setSurface(surface);就有畫面了。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章