简易的壁纸更换

本文介绍了一个使用Android平台实现自动更换壁纸的应用程序。该程序利用AlarmManager定期启动Service更换壁纸,并通过WallpaperManager API进行壁纸设置。用户可通过按钮控制壁纸更换的启动与停止。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.crazy.bizhi;

import android.app.Activity;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import java.net.ServerSocket;

/**
 *  通过 AlarmManager 来周期性的调用一个 Service
 *  更换壁纸的 API 为  WallpaperManager ,它提供了 clear() 方法来清除壁纸
 */
public class MainActivity extends Activity {

    Button start, stop;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        start = (Button)findViewById(R.id.start);
        stop =  (Button)findViewById(R.id.stop);

        // 启动 ChangeService 组件
        Intent intent = new Intent(MainActivity.this, ChangeService.class);

        // pi 代表了 ChangeService 组件
        final PendingIntent pi = PendingIntent.getService(MainActivity.this, 0, intent, 0);

        start.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                AlarmManager aManager = (AlarmManager)getSystemService(Service.ALARM_SERVICE);

                // 设置每隔 5 秒 执行一次 ChangeService 组件
                aManager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, 0 , 5000, pi);

                start.setEnabled(false);
                stop.setEnabled(true);
                Toast.makeText(MainActivity.this, "壁纸定时更换启动成功啦", Toast.LENGTH_SHORT).show();
            }
        });

        stop.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                start.setEnabled(true);
                stop.setEnabled(false);

                AlarmManager aManager = (AlarmManager)getSystemService(Service.ALARM_SERVICE);

                // 取消对 pi 的调用
                aManager.cancel(pi);
            }
        });
    }

}



package com.crazy.bizhi;

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

import java.io.IOException;

/**
 * 壁纸的资源定死了,可以从 SD 卡上读取图片,将更加完善
 */
public class ChangeService extends Service{

    int[] wallpapers = new int[]{
            R.drawable.lijiang,
            R.drawable.qiao,
            R.drawable.shuangta,
            R.drawable.shui
    };

    // 定义更换壁纸的 API
    WallpaperManager wManager;
    int count = 0;

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        // 如果到了最后一张,讲重新开始
        if (count >= 4){
            count = 0;
        }

        try {

            // 改变壁纸
            wManager.setResource(wallpapers[count++]);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return START_STICKY;
    }

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

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


还需要在 AndroidManifest.xml 中注册和设置权限

注册 Service
<pre style="font-family: 'Source Code Pro'; font-size: 13.5pt; background-color: rgb(255, 255, 255);"><<span style="color:#000080;"><strong>service </strong></span><span style="color:#660e7a;"><strong>android</strong></span><span style="color:#0000ff;"><strong>:name=</strong></span><span style="color:#008000;"><strong>".ChangeService"</strong></span>/>


设置更换壁纸的权限
<pre style="font-family: 'Source Code Pro'; font-size: 13.5pt; background-color: rgb(255, 255, 255);"><<span style="color:#000080;"><strong>uses-permission </strong></span><span style="color:#660e7a;"><strong>android</strong></span><span style="color:#0000ff;"><strong>:name=</strong></span><span style="color:#008000;"><strong>"android.permission.SET_WALLPAPER"</strong></span>/>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值