gpt4 book ai didi

java - TextureView:在后台执行 TextureView.getBitmap()

转载 作者:行者123 更新时间:2023-11-29 21:03:01 24 4
gpt4 key购买 nike

我在 TextureView 中显示 CameraView 并使用 TextureView.getBitmap()TextureView 获取位图>。

每次我调用 TextureView.getBitmap() 时,它都会导致相机预览卡住一纳秒。我想在后台运行这个任务。

谢谢

这是我试过的代码:

     findViewById(R.id.capture).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Bitmap bmp = mTextureView.getBitmap();
rev = new ArrayList<Bitmap>();
rev.add(bmp);
Toast.makeText(getApplicationContext(),""+ rev.size(), Toast.LENGTH_LONG).show();
}
});

这是我的日志

       08-22 03:59:57.867: E/AndroidRuntime(4859): FATAL EXCEPTION: main
08-22 03:59:57.867: E/AndroidRuntime(4859): java.lang.NullPointerException
08-22 03:59:57.867: E/AndroidRuntime(4859): at com.example.hangout_gif_camera.MainActivity$1.onClick(MainActivity.java:41)
08-22 03:59:57.867: E/AndroidRuntime(4859): at android.view.View.performClick(View.java:4211)
08-22 03:59:57.867: E/AndroidRuntime(4859): at android.view.View$PerformClick.run(View.java:17446)
08-22 03:59:57.867: E/AndroidRuntime(4859): at android.os.Handler.handleCallback(Handler.java:725)
08-22 03:59:57.867: E/AndroidRuntime(4859): at android.os.Handler.dispatchMessage(Handler.java:92)
08-22 03:59:57.867: E/AndroidRuntime(4859): at android.os.Looper.loop(Looper.java:153)
08-22 03:59:57.867: E/AndroidRuntime(4859): at android.app.ActivityThread.main(ActivityThread.java:5297)
08-22 03:59:57.867: E/AndroidRuntime(4859): at java.lang.reflect.Method.invokeNative(Native Method)
08-22 03:59:57.867: E/AndroidRuntime(4859): at java.lang.reflect.Method.invoke(Method.java:511)
08-22 03:59:57.867: E/AndroidRuntime(4859): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
08-22 03:59:57.867: E/AndroidRuntime(4859): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
08-22 03:59:57.867: E/AndroidRuntime(4859): at dalvik.system.NativeStart.main(Native Method)

最佳答案

 freeze for a nano second

你甚至不会意识到它卡住了我们的眼睛不能 react 那么快(除非你是超人)。

但是如果你真的想让它在一个单独的线程中运行,你可以试试这个:

编辑:

findViewById(R.id.capture).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Thread td = new Thread(new Runnable() {
public void run()
{
Bitmap bmp = mTextureView.getBitmap();
rev = new ArrayList<Bitmap>();
rev.add(bmp);
runOnUiThread(new Runnable() {

@Override
public void run() {
Toast.makeText(getApplicationContext(),""+ rev.size(), Toast.LENGTH_LONG).show();
}
});
}
});
td.start(); //start the thread

}
});

关于java - TextureView:在后台执行 TextureView.getBitmap(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25438814/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com