2014-11-04 3 views
0

Я получаю фото с моей камерой (мобильным телефоном), а затем мне нужно, чтобы установить его обои, но мне пришлось свалить. Когда я использую от setWallpaper(), скажу мне The method setWallpaper(Bitmap) from the type Context is deprecated. Вот мой код:Сбой, когда я использую метод setWallpaper android?

public class Camera extends Activity implements View.OnClickListener { 
    ImageButton ib; 
    Button b; 
    ImageView iv; 
    Intent i; 
    final static int cameraData = 0; 
    Bitmap bmp; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.photo); 
     initialize(); 
    } 

    private void initialize() { 
     iv = (ImageView) findViewById(R.id.IVReturnedPic); 
     ib = (ImageButton) findViewById(R.id.IBTakePic); 
     b = (Button) findViewById(R.id.btnSetWall); 
     b.setOnClickListener(this); 
     ib.setOnClickListener(this); 
    } 

    @Override 
    public void onClick(View v) { 
     switch (v.getId()) { 
     case R.id.btnSetWall: 
      try { 
       getApplicationContext().setWallpaper(bmp); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      break; 
     case R.id.IBTakePic: 
      i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
      startActivityForResult(i, cameraData); 
      break; 
     } 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     if (resultCode == RESULT_OK) { 
      Bundle extras = data.getExtras(); 
      bmp = (Bitmap) extras.get("data"); 
      iv.setImageBitmap(bmp); 
     } 
    } 
} 

Это принеси мне аварии здесь setWallpaper():

getApplicationContext().setWallpaper(bmp); 

Примечание: В этом коде я использую View.OnClickListener.

+0

пожалуйста, напишите StackTrace – ashiaka

+1

Следующее обсуждение должно ответить на ваш вопрос: http://stackoverflow.com/questions/15190170/ Что вы делаете из-за-метода-to-be-debrecated-and-how-can-i-resolve-result – Lukas

+0

, добавили ли вы разрешение на создание обоев в androidMaifest.xml? –

ответ

1

Попробуйте этот путь, надеюсь, это поможет вам решить вашу проблему.

Объявите объект WallpaperManager на уровне класса:

private WallpaperManager wallpaperManager; 

Инициализировать WallpaperManager объект в Initialize():

private void initialize() { 
    wallpaperManager = WallpaperManager.getInstance(this); 
} 

Установить растровое изображение объекта wallpaperManager.

case R.id.btnSetWall: 
    try { 
     if(bmp!=null){ 
      wallpaperManager.setBitmap(bmp); 
     }else{ 
      // write your bitmap null handle code here. 
     } 
    } catch (IOException e) { 
    Log.e(TAG, "Cannot set image as wallpaper", e); 
    } 
    break; 

Добавить это разрешение AndroidManifest.xml:

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

Я могу взять pic, но когда я нажимаю на кнопку для набора на обоях, мне становится крушение. И когда я вижу свой мобильный телефон, я вижу, что он установил его. Когда я нажимаю на кнопку, это просто сбивает меня. –

+0

Я могу взять pic, но когда я нажимаю на кнопку для набора на обоях, мне становится крушение. И когда я вижу свой мобильный телефон, я вижу, что он установил его. Когда я нажимаю на кнопку, это просто сбивает меня. –

+0

попытайтесь отлаживать при нажатии, чтобы установить кнопку обоев, иначе код подходит для установки обоев. –

0

У меня такие же проблемы в приложениях для Android, что и текст textarea ..... но я смог зафиксировать его, указав ссылку на объект в OnCreate метод !!!!!! а затем с помощью этого глобального ссылки я был в состоянии установить свойство текста TextArea вы должны смотреть подобного рода решения ...

0

Вы должны использовать WallpaperManager Class, если Вы развиваете более высокий уровень API 5:

WallpaperManager mManager = WallpaperManager.getInstance(getApplicationContext()); 

    try { 
     mManager.setResource(R.drawable.yourDrawable); 
    } catch (IOException e) { 

    //warning for the user 
e.printStackTrace(); 

    } 

И для использования диспетчера вам необходимо установить разрешения SET_WALLPAPER в манифесте. Кроме того, если вы разрабатываете в соответствии с уровнем API 5 и хотите использовать метод, который вы использовали, вы также должны установить разрешение.

+0

Я использую растровое изображение. –

0

Вы добавили разрешение обоев на свой манифест?

<uses-permission android:name="android.permission.SET_WALLPAPER" /> 
Смежные вопросы