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>/>