android 通过service 执行AlarmManager 自动更换壁纸
2015-04-14 17:12
190 查看
自动更换壁纸是通过服务在后台进行的,所以 新建一个类继承service服务
先附上详细的解析代码:
package com.example.changebz;
import java.io.IOException;
import android.app.Service;
import android.app.WallpaperManager;
import android.content.Context;
import android.content.Intent;
import android.os.IBinder;
import android.widget.Toast;
public class ChangeService extends Service {
int[] wallpapers = new int[]{
R.drawable.a,
R.drawable.a074,
R.drawable.a076
};
//定义系统壁纸管理服务
WallpaperManager wm ;
int current=0;
@Override
public void onCreate() {
super.onCreate();
//初始化
wm = WallpaperManager.getInstance(ChangeService.this);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
//Toast.makeText(ChangeService.this, "服务启动", Toast.LENGTH_LONG).show();
if(current>2){
current = 0;
}
try {
wm.setResource(wallpapers[current++]);
} catch (IOException e) {
e.printStackTrace();
}
return START_STICKY;
}
@Override
public IBinder onBind(Intent arg0) {
return null;
}
}
然后在activity界面中启动服务:
这里启动服务的使用了
Intent intent = new Intent(MainActivity.this,ChangeService.class);
//创建pendingIntent对象
final PendingIntent pi = PendingIntent.getService(MainActivity.this, 0, intent, 0);
再通过AlarmManager来定时启动服务,具体MainActivity代码如下:
package com.example.changebz;
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.text.InputFilter.AllCaps;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends Activity {
private Button btn_start;
private Button btn_end;
private AlarmManager aMger;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn_start = (Button) findViewById(R.id.btn_start);
btn_end = (Button) findViewById(R.id.btn_end);
aMger = (AlarmManager) getSystemService(Service.ALARM_SERVICE);
Intent intent = new Intent(MainActivity.this,ChangeService.class);
//创建pendingIntent对象
final PendingIntent pi = PendingIntent.getService(MainActivity.this, 0, intent, 0);
btn_start.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
//设置每隔5秒就执行pi代表的组件一次
aMger.setRepeating(AlarmManager.RTC_WAKEUP, 0, 5000, pi);
//设置按钮不可点击
btn_start.setEnabled(false);
btn_end.setEnabled(true);
Toast.makeText(MainActivity.this, "壁纸更换定时更换中", Toast.LENGTH_LONG).show();
}
});
btn_end.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
aMger.cancel(pi);//取消对pi的调度
btn_start.setEnabled(true);
btn_end.setEnabled(false);
}
});
}
}
完成这个功能主要是运用了AlarmManager对系统服务的管理,并且调用的PendingIntent 进行调度时间
先附上详细的解析代码:
package com.example.changebz;
import java.io.IOException;
import android.app.Service;
import android.app.WallpaperManager;
import android.content.Context;
import android.content.Intent;
import android.os.IBinder;
import android.widget.Toast;
public class ChangeService extends Service {
int[] wallpapers = new int[]{
R.drawable.a,
R.drawable.a074,
R.drawable.a076
};
//定义系统壁纸管理服务
WallpaperManager wm ;
int current=0;
@Override
public void onCreate() {
super.onCreate();
//初始化
wm = WallpaperManager.getInstance(ChangeService.this);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
//Toast.makeText(ChangeService.this, "服务启动", Toast.LENGTH_LONG).show();
if(current>2){
current = 0;
}
try {
wm.setResource(wallpapers[current++]);
} catch (IOException e) {
e.printStackTrace();
}
return START_STICKY;
}
@Override
public IBinder onBind(Intent arg0) {
return null;
}
}
然后在activity界面中启动服务:
这里启动服务的使用了
Intent intent = new Intent(MainActivity.this,ChangeService.class);
//创建pendingIntent对象
final PendingIntent pi = PendingIntent.getService(MainActivity.this, 0, intent, 0);
再通过AlarmManager来定时启动服务,具体MainActivity代码如下:
package com.example.changebz;
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.text.InputFilter.AllCaps;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends Activity {
private Button btn_start;
private Button btn_end;
private AlarmManager aMger;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn_start = (Button) findViewById(R.id.btn_start);
btn_end = (Button) findViewById(R.id.btn_end);
aMger = (AlarmManager) getSystemService(Service.ALARM_SERVICE);
Intent intent = new Intent(MainActivity.this,ChangeService.class);
//创建pendingIntent对象
final PendingIntent pi = PendingIntent.getService(MainActivity.this, 0, intent, 0);
btn_start.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
//设置每隔5秒就执行pi代表的组件一次
aMger.setRepeating(AlarmManager.RTC_WAKEUP, 0, 5000, pi);
//设置按钮不可点击
btn_start.setEnabled(false);
btn_end.setEnabled(true);
Toast.makeText(MainActivity.this, "壁纸更换定时更换中", Toast.LENGTH_LONG).show();
}
});
btn_end.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
aMger.cancel(pi);//取消对pi的调度
btn_start.setEnabled(true);
btn_end.setEnabled(false);
}
});
}
}
完成这个功能主要是运用了AlarmManager对系统服务的管理,并且调用的PendingIntent 进行调度时间
相关文章推荐
- Android 通过蒲公英pgyer的接口 Service 实现带进度下载App 通知栏显示 在线更新 自动更新Demo
- android通过service实现更新并显示下载进度条,最后自动安装实例
- Android 应用通过init.rc启动service去执行具有root权限sh脚本
- 我的Android进阶之旅------>Android使用AlarmManager全局定时器实现定时更换壁纸,androidalarmmanager
- Android开发之自动更换壁纸
- 我的Android进阶之旅------>Android使用AlarmManager全局定时器实现定时更换壁纸
- Android 通过蒲公英pgyer的接口 Service 实现带进度下载App 通知栏显示 在线更新 自动更新Demo
- Android使用AlarmManager全局定时器实现定时更换壁纸
- Android 实现Service自动启动
- ------------------Android 通过Service单独进程模仿离线推送 Server Push
- android_57_service_通过服务器启动屏幕状态接收者
- Spring容器启动后注入service到Servlet并自动执行
- Android自动打包-通过Jenkins
- android如何实现开机自动启动Service或app
- Android Service被关闭后自动重启,解决被异常kill 服务
- android如何实现开机自动启动Service或app
- Android Service被关闭后自动重启,解决被异常kill 服务
- android如何实现开机自动启动Service或app
- Android 通过Service单独进程模仿离线推送 Server Push
- android如何实现开机自动启动Service或app