Android壁紙設定まとめ

9651 ワード

多くの大神のブログを见て、自分で书くことを考えたことがなくて、ずっと自分がとても怠け者だと思って、ああ、ついに我慢できなくて、自分で手を出して私达はもっと学ぶことができて、おしゃべりは多く言わないで、直接考えます:今いくつかの壁紙を设置する方法を総括しました:(1)onCreate()方法の中でactivityのテーマを设置します;setTheme(android.R.style.Theme_Wallpaper_NoTitleBar_Fullscreen); (2)Android Mainifestを通過する.xmlファイルで設定;android:theme=”@android:style/Theme.Wallpaper.NoTitleBar.Fullscreen」(3)呼び出しシステムが持つ壁紙選択機能は,もちろんここではintentが必要であり,自分が壁紙を選択する意図を示す.Intent intent = new Intent(Intent.ACTION_SET_WALLPAPER); startActivity(Intent.createChooser);(4)wallpaperManagerを利用して、権限を追加することを覚えておく.WallpaperManager wallpaperManager = WallpaperManager.getInstance(this); または@SuppressLint(「ServiceCast」)WallpaperManager manager=(WallpaperManager)getSystemService(WALLPAPER_SERVICE);ここでこの@SuppressLint("ServiceCast")を追加しないと問題になりますが、なぜか、APIバージョンの問題かもしれませんが、フォローします
(5)壁紙を動的にロードすることは他の人のブログを参考にしても実現しましたが、壁紙を切り替える速度が遅すぎて、自分の予想に達しませんでした.AlarmManager alarmManager=(AlarmManager)getSystemService(ALARM_SERVICE);Intent serviceIntent = new Intent(MainActivity.this,SetWallpaperService.class); PendingIntent pi =PendingIntent.getService(this, 0, serviceIntent, 0); alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, 0, 1000, pi);
1. MainActivity.java
import android.annotation.SuppressLint; import android.app.Activity; import android.app.AlarmManager; import android.app.PendingIntent; import android.app.WallpaperManager; import android.content.Intent; import android.graphics.BitmapFactory; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.ImageView;
import java.io.IOException;
public class MainActivity extends Activity implements View.OnClickListener{
private Button button1,button2,button3,button4;
private ImageView imageView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //      activity  ,       ,     androidManifest   theme
    //setTheme(android.R.style.Theme_Wallpaper_NoTitleBar_Fullscreen);
    //setTheme(android.R.style.Theme_Wallpaper_NoTitleBar);
    setContentView(R.layout.activity_main);
    button1 = (Button) findViewById(R.id.button1);
    button2 = (Button) findViewById(R.id.button2);
    button3 = (Button) findViewById(R.id.button3);
    button4 = (Button) findViewById(R.id.button4);
    button1.setOnClickListener(this);
    button2.setOnClickListener(this);
    button3.setOnClickListener(this);
    button4.setOnClickListener(this);
}

@Override
public void onClick(View view) {
    switch (view.getId()){
        case R.id.button1:
            //             ,       
            Intent intent = new Intent(Intent.ACTION_SET_WALLPAPER);
            startActivity(Intent.createChooser(intent, "    "));
            break;
        case R.id.button2:
            //  WallpaparManager,    set_wallpaper
            WallpaperManager wallpaperManager = WallpaperManager.getInstance(this);
            try {
                wallpaperManager.setBitmap(BitmapFactory.decodeResource(getResources(),R.drawable.fffg));
            } catch (IOException e) {
                e.printStackTrace();
            }

            //getSystemService(WALLPAPER_SERVICE)  wallpaperManager    
          /*  @SuppressLint("ServiceCast")
            WallpaperManager manager =(WallpaperManager)getSystemService(WALLPAPER_SERVICE);
            try {
                manager.setBitmap(BitmapFactory.decodeResource(getResources(),R.drawable.pic1));
            } catch (IOException e) {
                e.printStackTrace();
            }*/

            break;
        case R.id.button3:
            //      ,      ,  AlarmManager
            AlarmManager alarmManager =(AlarmManager)getSystemService(ALARM_SERVICE);
            Intent serviceIntent = new Intent(MainActivity.this,SetWallpaperService.class);
            PendingIntent pi =PendingIntent.getService(this, 0, serviceIntent, 0);
            alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, 0, 1000, pi);

            /*//    
            alarmManager.cancel(pi);
            //    
            WallpaperManager manager =WallpaperManager.getInstance(this);
            try {
                manager.clear();
            } catch (IOException e) {
                e.printStackTrace();
            }*/

            break;
        default:
            break;
    }
}

}
2 AndroidManifest.xml

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">


    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="          "
        android:id="@+id/button1" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="  WallpaparManager"
        android:id="@+id/button2" />

    <Button
        android:layout_width="207dp"
        android:layout_height="wrap_content"
        android:text="      "
        android:id="@+id/button3" />

LinearLayout>

4 SetWallpaperService.class
package tingting.com.mytest;

import android.app.Service;
import android.app.WallpaperManager;
import android.content.Intent;
import android.os.IBinder;

import java.io.IOException;

/**
 * Created on 2017/6/28.
 */
public class SetWallpaperService extends Service{
    private int current = 0;  //      
    private int[] papers = new int[]{R.drawable.ffrhh, R.drawable.pic1,
                                        R.drawable.fffg, R.drawable.jjde};
    private WallpaperManager wManager = null;

    @Override
    public void onCreate() {
        super.onCreate();
        wManager =WallpaperManager.getInstance(this);
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        if(current >4){
            current=0;
        }
        try {
           /* Bitmap bitmap =BitmapFactory.decodeResource(getResources(),papers[current]);
            wManager.setBitmap(bitmap);*/
            //     
            wManager.setResource(papers[current++]);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return START_STICKY;
    }

    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }
}