初學Android 鬧鐘服務調用Service 六十九
阿新 • • 發佈:2019-01-23
ons 如果 trac raw ttr 取消 null binder 創建
這裏面用到了WallpaperManager這個類,是Android系統裏面專門管理墻紙的類
成功設置後,壁紙是5秒更換一次,也可以停止更換的服務
下面的例子是讓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 六十九