0

SD Cardのフォルダーにダウンロードした画像があるアプリケーションがあります。壁紙として保存したいです。

以下のコードを使用すると、ユーザーは壁紙として設定できます。

WallpaperManager myWallpaperManager = WallpaperManager.getInstance(context);
myWallpaperManager.setBitmap(loadedImage);

ただし、ギャラリー アプリから画像を選択して壁紙を設定するときに、トリミング操作などの画像の一部を選択するための UI は表示されません。コードでそのような操作をトリガーしたいと思います。ユーザーがアプリのボタンをクリックすると、壁紙を設定するトリミング オプションを使用してギャラリー アプリに移動したいと考えています。

これを行う方法を教えてください。ありがとうございました。

4

1 に答える 1

1

これを試してみてください:

  1. ライブラリから選択するには (SD カードを含む) - void selectPhoto() :

    Intent intent = new Intent();
    intent.setType("image/*");
    intent.setAction(Intent.ACTION_GET_CONTENT);
    startActivityForResult(Intent.createChooser(intent, "Choose photo to upload"), PICK_FROM_FILE);
    
  2. トリミング アクションを開始するには - void doCrop() :

    Intent intent = new Intent("com.android.camera.action.CROP");
    intent.setType("image/*");
    
    // Check if there is image cropper application installed.
    List<ResolveInfo> list = getPackageManager().queryIntentActivities( intent, 0 );
    
    int size = list.size();
    
    // If no cropper application is found, throw a message.
    if (size == 0) {            
        Toast.makeText(this, "Can not find image crop app", Toast.LENGTH_SHORT).show();
        return;
    
    // If there're cropper applications found, use the first
    } else {
    
        // Specify image path and cropping parameters
        intent.setData(mImageCaptureUri);
        intent.putExtra("outputX", 0);
        intent.putExtra("outputY", 0);
        intent.putExtra("return-data", true);
    
        Intent i = new Intent(intent);
        ResolveInfo res = list.get(0);
        i.setComponent( new ComponentName(res.activityInfo.packageName, res.activityInfo.name));
        startActivityForResult(i, CROPPED_IMAGE);
    
  3. アクティビティの結果を処理する - void onActivityResult(int requestCode, int resultCode, Intent data)

    if (resultCode != RESULT_OK) return;
    
    switch (requestCode) {
        case PICK_FROM_FILE: 
            mImageCaptureUri = data.getData();
            doCrop();
            break;          
        case CROPPED_IMAGE:         
            Bundle extras = data.getExtras();
            try{
                if (extras != null) {
                     Bitmap myImage = extras.getParcelable("data");
                }
            }
            catch(Exception e)
            {
                e.printStackTrace();
            }
            break;
    

このコードは、画像を選択した直後にトリミング アクションを有効にします。

mImageCaptureUriは選択された画像の URI であり、トリミング アクションの意図に渡されることに注意してください。

于 2012-12-03T04:18:53.703 に答える