1. 程式人生 > >初學Android 鬧鐘服務調用Service 六十九

初學Android 鬧鐘服務調用Service 六十九

ons 如果 trac raw ttr 取消 null binder 創建

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