0

我啓動一個線程通過TextureView到getBitmap,但是,我得到一個異常:TextureView getBitmap java.lang.IllegalStateException

E/AndroidRuntime: FATAL EXCEPTION: Thread-814 
java.lang.IllegalStateException: Hardware acceleration can only be used with a single UI thread. 
Original thread: Thread[main,5,main] 
Current thread: Thread[Thread-814,5,main] 
    at android.view.HardwareRenderer$GlRenderer.checkCurrent(HardwareRenderer.java:1343) 
    at android.view.HardwareRenderer$GlRenderer.validate(HardwareRenderer.java:1080) 
    at android.view.TextureView.getBitmap(TextureView.java:587) 
    at com.example.zmc.colorfultextproject.demo2.SecondActivity.getFrame(SecondActivity.java:153) 
    at com.meitu.colorfultext.ColorfulTextView$1.run(ColorfulTextView.java:131) 
    at java.lang.Thread.run(Thread.java:856) 

在我的代碼

private TextureView demo2VideoTtv; 

public Bitmap getFrame() { 
    //這裏會造成抖動 
    long start = System.currentTimeMillis(); 
    demo2VideoTtv.getBitmap(mFrame); // here throw exception 
    Log.d("SecondActivity", "getFrame time" + (System.currentTimeMillis() - start)); 
    //裁剪圖片 
    mFrame_part = Bitmap.createBitmap(mFrame, demo2ColorfulText.getLeft(), demo2ColorfulText.getTop(), demo2ColorfulText.getWidth(), demo2ColorfulText.getHeight()); 
    return mFrame_part; 
} 

回答

0

我不知道的確切的API閾值,但在舊設備上TextureView.getBitmap()必須在UI線程上請求。

它似乎不是21+上的問題。最後我看到它在api 19上是可重現的。

相關問題