gpt4 book ai didi

java - 相机位图/图像保存后加载滑动层

转载 作者:太空宇宙 更新时间:2023-11-04 14:07:11 25 4
gpt4 key购买 nike

我还很新鲜,所以放轻松。

这是我的相机的 OnClickListener

buttonClick = (Button) findViewById(R.id.btnCapture);

buttonClick.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
preview.mCamera.takePicture(shutterCallback, rawCallback, jpegCallback);
camera.takePicture(shutterCallback, rawCallback, jpegCallback);


}

}
);}

这是保存到SD卡的代码

private class SaveImageTask extends AsyncTask<byte[], Void, Void> {

@Override
protected Void doInBackground(byte[]... data) {
FileOutputStream outStream = null;

// Write to SD Card
try {
File sdCard = Environment.getExternalStorageDirectory();
File dir = new File(sdCard.getAbsolutePath() + "/camtest");
dir.mkdirs();

String fileName = String.format("%d.jpg", System.currentTimeMillis());
File outFile = new File(dir, fileName);

outStream = new FileOutputStream(outFile);
outStream.write(data[0]);
outStream.flush();
outStream.close();

Log.d(TAG, "onPictureTaken - wrote bytes: " + data.length + " to " + outFile.getAbsolutePath());

refreshGallery(outFile);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
}
return null;


}
}

然后我将滑动层向上调用

 public void buttonClicked(View v){
switch (v.getId()) {
case R.id.btnCapture:
if (!mSlidingLayer.isOpened()) {
mSlidingLayer.openLayer(true);
}
break;
case R.id.buttonClose:
if (mSlidingLayer.isOpened()) {
mSlidingLayer.closeLayer(true);
}
break;
}
}

如何在一个实例中使用滑动层中的按钮单击来实现相机中的 OnClickListener。

我尝试将两者结合起来,但这给了我 RuntimeException: Canvas: attempts to use a returned bitmap 错误,因为滑动层在保存图像任务完成之前生效。

任何帮助都会很棒。

亲切的问候肖恩。

最佳答案

AsyncTaskonPostExecute() 方法中触发代码来滑动图层。该方法将在任务完成时调用,并将在主线程上调用,以便您可以安全地操作 UI 类。

关于java - 相机位图/图像保存后加载滑动层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28734190/

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