gpt4 book ai didi

java - com.android.camera.action.CROP 在摩托罗拉 Defy 上设置壁纸

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:06:32 26 4
gpt4 key购买 nike

我正在开发 Android 2.1+ 应用程序并尝试拍照,然后将该 Intent 的结果发送到裁剪功能。它似乎适用于 Sony Ericsson xmp,但当我将它放在 Moto Defy 上时,裁剪功能失败,因为它似乎忽略了我为数据输入的文件名,而是查看 /data/data/com.motorola.gallery/files/temp-wallpaper 出于某种原因。这是裁剪功能没有返回任何数据的结果,我刚刚拍摄的图像被设置为手机的壁纸图像!下面是一些示例代码:

public static final String SD_CARD_TEMP_DIR = Environment.getExternalStorageDirectory() + File.separator;
public static final String SD_CARD_TEMP_ORIG = SD_CARD_TEMP_DIR + "origPhoto.jpg";
public static final String SD_CARD_TEMP_CROP = SD_CARD_TEMP_DIR + "croppedPhoto.jpg";

Intent intent = new Intent("com.android.camera.action.CROP");
intent.setDataAndType(Uri.fromFile(new File(Const.SD_CARD_TEMP_ORIG)), "image/*");
intent.putExtra("crop", true);
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
intent.putExtra("outputX", 512);
intent.putExtra("outputY", 512);
intent.putExtra("return-data", false);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(Const.SD_CARD_TEMP_CROP)));

输出是这样的:

INFO/ActivityManager(1242): Starting activity: Intent { act=com.android.camera.action.CROP dat=file:///sdcard/origPhoto.jpg typ=image/* cmp=com.motorola.gallery/.CropImage (has extras) }
INFO/ActivityManager(1242): Start proc com.motorola.gallery:CropImage for activity com.motorola.gallery/.CropImage: pid=25733 uid=10014 gids={1015, 9003, 9007, 9008, 2001, 3003}
WARN/CropImage(25733): CropImg mBitmap was null, retreive frm URIfile:///sdcard/origPhoto.jpg
ERROR/CropImage(25733): got IOException java.io.FileNotFoundException: /data/data/com.motorola.gallery/files/temp-wallpaper
INFO/ActivityManager(1242): Displayed activity com.motorola.gallery/.CropImage: 5664 ms (total 5664 ms)
WARN/System.err(25672): java.io.FileNotFoundException: /sdcard/croppedPhoto.jpg
DEBUG/(25672): unable to unlink '/sdcard/croppedPhoto.jpg': No such file or directory (errno=2)

有没有人对此问题有任何经验或解决方法的想法?

最佳答案

我会远离你正在使用的 Intent,因为它不是标准的,所以可能不会在任何地方都得到支持,

根据您使用的额外数据,我相信您正在进行固定大小的裁剪,并且不需要任何用户输入。这使得解决方案非常简单,只要您没有用完内存即可。

  1. 通过BitmapFactory.decodeFile加载图像.你可以传入 BitmapFactory.options对象以在加载时选择性地缩放图像。
  2. 使用 Bitmap.createBitmap(Bitmap source, int x, int y, int width, int height) 创建裁剪位图
  3. Bitmap.compress 将其写入磁盘

关于java - com.android.camera.action.CROP 在摩托罗拉 Defy 上设置壁纸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5709601/

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