Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在关闭应用程序之前停止textureview侦听器并显示图像_Java_Android_Textureview - Fatal编程技术网

Java 如何在关闭应用程序之前停止textureview侦听器并显示图像

Java 如何在关闭应用程序之前停止textureview侦听器并显示图像,java,android,textureview,Java,Android,Textureview,我有一个简单的xml布局,如下所示,在FrameLayout中只有一个TextureView 以及以下主要活动: public class MainActivity extends Activity implements TextureView.SurfaceTextureListener { private static final String TAG = "MainActivity"; // Local references to layout components

我有一个简单的xml布局,如下所示,在FrameLayout中只有一个TextureView

以及以下主要活动:

public class MainActivity   extends Activity 
implements TextureView.SurfaceTextureListener {
private static final String    TAG = "MainActivity";    

// Local references to layout components
private TextureView mTxvCameraPreview;

// Camera manager
private CameraManager mCameraManager;


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

    // Initialize layout and components
    setContentView(R.layout.activity_main);     
    mTxvCameraPreview = (TextureView)findViewById(R.id.txv_camera_preview);


    // Camera managing
    mCameraManager = new CameraManager(this);
    mTxvCameraPreview.setSurfaceTextureListener(this);
}

@Override
protected void onResume() {
    super.onResume();

    if (mTxvCameraPreview.isAvailable())
        mCameraManager.startPreview(mTxvCameraPreview.getSurfaceTexture());     
}

@Override
protected void onPause() {
    super.onPause();
    mCameraManager.stopPreview();
}


@Override
public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) {
    mCameraManager.startPreview(surface);       
}

@Override
public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) {
    mCameraManager.stopPreview();
    return true;
}

@Override
public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) {} // Unused

@Override
public void onSurfaceTextureUpdated(SurfaceTexture surface) {} // Unused
}

对于每一个框架,我都做了一些细化,这是可以的。 我想要的是添加一个按钮,停止相机并显示在TextureView中从SD卡加载文件

这方面的伪代码可以是这样的:

public void onButtonClicked(View view) {
    // stop the surface listener (it is needed?)
    File imgFile = new  File(“/sdcard/Images/elaboration_result.jpg”);
    Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
    // show myBitmap on TextureView (if possible)
}
是否可以在不修改xml布局的情况下执行此操作? 提前谢谢

恐怕你是手工操作的。最好的办法是在TextureView上创建一个新的ImageView,并在需要时设置其图像

public void onButtonClicked(View view) {
    // if we don't need to keep previewing new frames, stop the preview
    mCameraManager.stopPreview();
    // now, show our ImageView (which should be in front of the TextureView)
    Bitmap myBitmap = BitmapFactory.decodeFile(file_path_here);
    myImageView.setImageBitmap(myBitmap);
    myImageView.setVisibility(View.VISIBLE);
}

无需创建另一个图像。只用

textureView.getBitmap(file.getAbsolutePath);

您应该能够通过停止摄影机预览来断开摄影机与TextureView的连接,然后锁定曲面以获得画布并绘制位图。你可能回不去了——一旦你把画布连接到一个表面上,它就不想放手了——但是如果你无论如何都要结束活动,那就没关系了。好的,谢谢,但是我该怎么做呢?有人能完成我写的伪代码吗?再次感谢!