gpt4 book ai didi

在我重新启动手机之前,Android 自定义相机应用程序图片不会出现在图库中

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:25:48 25 4
gpt4 key购买 nike

我一直在开发一个相机应用程序,我希望它在我按下“拍摄”按钮时拍摄一张照片并将其保存到 SD 卡中,以便可以在图库中查看。

但是目前它无法保存我想要的方式。目前当我按下捕获时它会拍照,但照片只有在我完全重启手机后才会显示在图库中。

这个问题已经困扰我好几个星期了,我主要是按照 android 提供的教程进行操作。

这是我处理图片的主类的代码。

 private PictureCallback mPicture = new PictureCallback() 
{

@Override
public void onPictureTaken(byte[] data, Camera camera)
{
File pictureFile = getOutputMediaFile(MEDIA_TYPE_IMAGE);
if (pictureFile == null){
Log.d(TAG, "Error creating media file, check storage permissions: ");
return;
}

try {
FileOutputStream fos = new FileOutputStream(pictureFile);
fos.write(data);
fos.close();
} catch (FileNotFoundException e) {
// Log.d(TAG, "File not found: " + e.getMessage());
} catch (IOException e) {
// Log.d(TAG, "Error accessing file: " + e.getMessage());
}
}
};


private static File getOutputMediaFile(int type){
// To be safe, you should check that the SDCard is mounted
// using Environment.getExternalStorageState() before doing this.

File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES), "MyCameraApp");
// This location works best if you want the created images to be shared
// between applications and persist after your app has been uninstalled.

// Create the storage directory if it does not exist
if (! mediaStorageDir.exists()){
if (! mediaStorageDir.mkdirs()){
Log.d("MyCameraApp", "failed to create directory");
return null;
}
}

// Create a media file name
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
File mediaFile;
if (type == MEDIA_TYPE_IMAGE){
mediaFile = new File(mediaStorageDir.getPath() + File.separator +
"IMG_"+ timeStamp + ".jpg");
} else if(type == MEDIA_TYPE_VIDEO) {
mediaFile = new File(mediaStorageDir.getPath() + File.separator +
"VID_"+ timeStamp + ".mp4");
} else {
return null;
}

return mediaFile;
}

public void onClick(View v) {

mCamera.takePicture(null, null, mPicture);
Context context = getApplicationContext();
CharSequence text = "Click Detected";
int duration = Toast.LENGTH_SHORT;

Toast toast = Toast.makeText(context, text, duration);
toast.show();

}

当我点击捕获时,我的日志猫显示如下

等级:E标签:相机文本:在 CAMERA_MSG_RAW_IMAGE 的句柄消息中

我的权限是

uses-permission android:name="android.permission.CAMERA"
uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"

非常感谢任何帮助。谢谢

最佳答案

此问题与 Image, saved to sdcard, doesn't appear in Android's Gallery app 重复(尤其是ShadowGod的回答)

要修复您的代码,请在 fos.close() 之后将以下内容添加到 onPictureTaken

File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES), "MyCameraApp");
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED,
Uri.parse("file://"+ mediaStorageDir)));

关于在我重新启动手机之前,Android 自定义相机应用程序图片不会出现在图库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13799468/

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