2013-07-03 65 views
0

我想從畫廊中設置壁紙。 所選圖像必須使用設備的CropImage類。多種設備上的Android壁紙

問題是每個設備都有一個不同的CropImage類,所以當我使用「裁剪」動作時,設備的CropImage會打開,但並非所有設置爲牆紙。

代碼:

Intent cropperIntent = new Intent("com.android.camera.action.CROP", chosenImageUri); 
     cropperIntent.setDataAndType(chosenImageUri, "image/*"); 

     cropperIntent.putExtra("crop", true); 
     cropperIntent.putExtra("aspectX", outSize.x); 
     cropperIntent.putExtra("aspectY", outSize.y); 
     cropperIntent.putExtra("outputX", outSize.x); 
     cropperIntent.putExtra("outputY", outSize.y); 
     cropperIntent.putExtra("width", outSize.x); 
     cropperIntent.putExtra("height", outSize.y); 
     cropperIntent.putExtra("scale", true); 
     cropperIntent.putExtra("noFaceDetection", true); 
     cropperIntent.putExtra("set-as-wallpaper", true); // for: com.android.gallery3d.app.CropImage 
     cropperIntent.putExtra("setWallpaper", true); // for: com.android.camera.CropImage 

對於某些設備它不是設置爲牆紙在所有(如HTC)。也許必須設置另一個額外的像「設置爲牆紙」和「設置爲牆紙」...

是否有一種通用的方法來設置牆紙與裁剪所有設備?

+0

試着把''''和' '例如。 – g00dy

回答

0

這一定不適用於某些手機,如HTC,因爲他們使用自己的圖庫/相機。對於這些設備,您可以僅使用未裁剪的圖像作爲單獨的資源。但是,如果您有圖像的位圖比,你會添加此功能設置爲牆紙:

public void SetBackground(int Url) { 

    try { 
     File file = new File("/sdcard/sampleimage"); 
     Bitmap bitmap = BitmapFactory.decodeResource(getResources(), Url); 
     bitmap.compress(CompressFormat.JPEG, 80, new FileOutputStream(file)); 
     Context context = this.getBaseContext(); 
     context.setWallpaper(bitmap);    
     Toast.makeText(getApplicationContext(), "Wallpaper has been set",    Toast.LENGTH_SHORT).show();    
    } catch (MalformedURLException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    }   
} 

你應該爲此

<uses-permission android:name="android.permission.SET_WALLPAPER"></uses-permission> 

這是從here採取添加權限。