码迷,mamicode.com
首页 > 移动开发 > 详细

初学Android 闹钟服务调用Service 六十九

时间:2019-01-23 21:30:55      阅读:344      评论:0      收藏:0      [点我收藏+]

标签:调用   配置   rtc   upload   his   exce   find   分享   壁纸   

下面的例子是让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 六十九

标签:调用   配置   rtc   upload   his   exce   find   分享   壁纸   

原文地址:https://www.cnblogs.com/swdhywhd/p/10311225.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!