【问题标题】:Custom camera photos are not showing in Windows Explorer自定义相机照片未显示在 Windows 资源管理器中
【发布时间】:2015-10-06 14:25:22
【问题描述】:

我已按照 android 网站上关于如何创建自定义相机应用程序的说明进行操作,到目前为止我做到了。我创建了一个带有拍照按钮的布局,它工作正常,图像使用Camera.PictureCallback 保存在 SD 卡上。

问题是,当我通过电缆将手机连接到 PC 时,如果我浏览到保存应用程序图像的目录,即使我刷新目录,它们也不会显示。如果我在应用程序中使用它们,它工作正常,这意味着它们保存在目录中并且路径是正确的。我还可以在电话上使用File Explorer 看到他们。

但是,如果我使用Windows Explorer,它们直到一段时间后才会显示。

这是正常的还是我在这里遗漏了什么?

手机 (Samsung Galaxy S6) 作为媒体设备 (MTP) 连接到 PC,但我也尝试将其作为相机 (PTP) 连接,结果是一样的。

这是我用来保存图像的示例代码:

private Camera.PictureCallback mPicture = new Camera.PictureCallback() {

    String timeStamp = new SimpleDateFormat("yyyyMMdd HHmmss").format(new Date());
    String imageFileName = "MyTestPhoto_" + timeStamp;

    @Override
    public void onPictureTaken(byte[] data, Camera camera) {
        File mediaStorageDir = new File(SAVE_IMAGE_PATH);

        if (!mediaStorageDir.exists())
            mediaStorageDir.mkdir();

            File pictureFile = new File(mediaStorageDir + imageFileName + ".jpg");
            if (pictureFile == null){
                Log.d("PictureCallback", "Error creating media file, check storage permissions.");
                return;
            }

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

            photoButton.setClickable(true);
            camera.startPreview();
        }
 };

根据我在互联网上的发现,这可能会有所帮助:

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED,
                    Uri.parse(mediaStorageDir + imageFileName + ".jpg")));

但它没有,事实上应用程序现在崩溃了:

Activity com.example.testApplicationCamera.CameraActivity 已泄露 IntentReceiver com.example.testApplicationCamera.CameraActivity$1@28968130 最初是在这里注册的。你错过了一个电话 unregisterReceiver()?

Android 4.4 KitKat 及更高版本似乎不支持此功能。 我不认为我真的需要它,因为我不想让它在画廊或任何东西中可见,它实际上工作正常,只是出于好奇,为什么它没有出现在 Windows 资源管理器中?

【问题讨论】:

    标签: android camera android-camera picturecallback


    【解决方案1】:

    根据我在互联网上的发现,这可能会有所帮助:

    这从来都不是一个合适的解决方案,幸运的是现在已经被阻止了。

    使用MediaScannerConnection 及其静态scanFile() 方法提醒MediaStore 索引您的文件。

    为什么它没有出现在 Windows 资源管理器中?

    Windows 正在通过媒体传输协议 (MTP) 连接到 Android 设备。 Android 通过 MTP 连接提供的不是文件系统中的内容,而是MediaStore 索引的内容。

    【讨论】:

    • 完美,感谢您的解释。 MediaScannerConnection.scanFile() 效果很好。顺便说一句,我的代码中还有一个问题,我在 onPictureTaken 方法之前获取图像名称。我一定是错误地移动了它,因为它昨天不在那里。傻我...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-22
    • 2022-01-11
    • 2017-06-09
    • 1970-01-01
    • 2016-08-24
    • 1970-01-01
    相关资源
    最近更新 更多