初学Android 闹钟服务调用Service 六十九
Posted swdhywhd
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初学Android 闹钟服务调用Service 六十九相关的知识,希望对你有一定的参考价值。
下面的例子是让AlarmManager定时调用某个Service,从而让系统实现定时更换壁纸的功能
界面非常简单
先创建更换壁纸的服务类
package WangLi.Service.AlarmWallpaper;
import android.app.Service;
import android.app.WallpaperManager;
import android.content.Intent;
import android.os.IBinder;
public class ChangeService extends Service {
//定义定时更新的壁纸资源
int[] wallpapers = new int[] {
R.drawable.shuangta,
R.drawable.lijiang,
R.drawable.qiao,
R.drawable.shui
};
//定义系统的壁纸管理服务
WallpaperManager wManager;
//定义当前所显示的壁纸
int current = 0;
@Override
public void onStart(Intent intent,int startId)
{
//如果到了最后一张,系统重头开始
if(current >= 4)
current = 0;
try
{
//改变壁纸
wManager.setResource(wallpapers[current++]);
}
catch(Exception e)
{
e.printStackTrace();
}
super.onStart(intent, startId);
}
@Override
public void onCreate()
{
super.onCreate();
//初始化WallpaperManager
wManager = WallpaperManager.getInstance(this);
}
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
}
}
这里面用到了WallpaperManager这个类,是Android系统里面专门管理墙纸的类
程序里面要加上设置墙纸的权限
<uses-permission android:name="android.permission.SET_WALLPAPER"/>
同时配置上这个service类
<service android:name="ChangeService"></service>
接着在主界面调用这个服务
package WangLi.Service.AlarmWallpaper;
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.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
public class AlarmChangeWallpaper extends Activity {
// 定义AlarmManager对象
AlarmManager aManager;
Button start, stop;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
start = (Button) findViewById(R.id.start);
stop = (Button) findViewById(R.id.stop);
aManager = (AlarmManager) getSystemService(Service.ALARM_SERVICE);
// 指定启动ChangeService组件
Intent intent = new Intent(AlarmChangeWallpaper.this,
ChangeService.class);
// 创建PendingIntent对象
final PendingIntent pi = PendingIntent.getService(
AlarmChangeWallpaper.this, 0, intent, 0);
start.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// 设置每5秒执行pi代表的组件一次
aManager.setRepeating(AlarmManager.RTC_WAKEUP, 0, 5000, pi);
start.setEnabled(false);
stop.setEnabled(false);
Toast.makeText(AlarmChangeWallpaper.this, "壁纸定时更换启动成功啦", 5000)
.show();
}
});
stop.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
start.setEnabled(true);
stop.setEnabled(true);
//取消对pi的调度
aManager.cancel(pi);
}
});
}
}
成功设置后,壁纸是5秒更换一次,也可以停止更换的服务
再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow
以上是关于初学Android 闹钟服务调用Service 六十九的主要内容,如果未能解决你的问题,请参考以下文章