Android Service 示例
来源:互联网 发布:印花软件 编辑:程序博客网 时间:2024/04/26 01:05
- 简单的服务
首先在eclipse中创建Android工程TestService和TestActivity.java,同时创建服务类MyService
public class MyService extends Service {
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
Toast.makeText(this, "Service created...", Toast.LENGTH_LONG).show();
}
@Override
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
Toast.makeText(this, "Service destroyed...", Toast.LENGTH_LONG).show();
}
}
其次,在AndroidManifest.xml中声明该服务,注意和activity保持平级
第三,在res目录中创建文件夹raw,添加qingshang.mp3至该文件夹。
第四,在main.xml中添加两个button,位于节点下
第五,在TestActivity.java中的onCreate回调中添加代码
public class TestActivity extends Activity {
public String MYSERVICE = "com.kortide.service.MyService";
public String CONTROLMUSICSERVICE = "com.kortide.service.ControlMusicService";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 创建2个按钮控制服务
Button startbtn = (Button) findViewById(R.id.btn_start);
Button stopbtn = (Button) findViewById(R.id.btn_stop);
startbtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// 启动服务,通过Intent的方法来启动
Intent serviceIntent = new Intent();
serviceIntent.setAction(MYSERVICE);
startService(serviceIntent);
}
});
stopbtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent serviceIntent = new Intent();
serviceIntent.setAction(MYSERVICE);
stopService(serviceIntent);
}
});
Toast.makeText(this, "TestActivity created...", Toast.LENGTH_LONG).show();
Log.i("CHEN", "TestActivity created...");
}
}
第六,选择菜单Run->Run,选择“Android Application”查看运行结果
- 通过ADIL调用服务
首先,创建Android工程BindService和BindService.java,创建IMusicControlService.aidl(可以使用菜单File->New->File来创建),elipse会在gen中自动创建一些代码
interface IMusicControlService
{
void playMusic();
void stopMusic();
}
其次,同上面的示例,在res目录中创建文件夹raw,添加qingshang.mp3至该文件夹。AndroidManifest.xml中声明该服务。
main.xml中添加两个button。
第三,创建类ControlMusicService
public class ControlMusicService extends Service {
@Override
public IBinder onBind(Intent intent) {
return binder;
}
public MediaPlayer mplayer;
private final IMusicControlService.Stub binder = new IMusicControlService.Stub() {
MediaPlayer player;
@Override
public void playMusic() throws RemoteException {
Log.i("CHEN", "Play music...");
player = MediaPlayer.create(ControlMusicService.this,
R.raw.qingshang);
player.start();
}
@Override
public void stopMusic() throws RemoteException {
Log.i("CHEN", "Stop music...");
if (player.isPlaying()) {
player.stop();
}
}
};
}
在BindService.java中添加绑定服务的代码
public class BindService extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Intent intent = new Intent();
intent.setClass(this,ControlMusicService.class);
bindService(intent, serviceConnection, Context.BIND_AUTO_CREATE);
Log.i("CHEN", "Bind service...");
Button btnplay = (Button)findViewById(R.id.btn_play);
Button btnstop = (Button)findViewById(R.id.btn_stop);
btnplay.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
try {
iMusicControlService.playMusic();
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
btnstop.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
try {
iMusicControlService.stopMusic();
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}
public IMusicControlService iMusicControlService;
private final ServiceConnection serviceConnection = new ServiceConnection() {
// 第一次连接service时会调用这个方法
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
iMusicControlService = IMusicControlService.Stub
.asInterface(service);
}
// service断开的时候会调用这个方法
@Override
public void onServiceDisconnected(ComponentName name) {
iMusicControlService = null;
}
};
}
参考资料
- 通过AIDL调用Service
http://www.eoeandroid.com/viewthread.php?tid=1260
- Android Service 示例
- [zz] Android Service 示例
- Android Service示例
- Android Service示例
- Android Service简单示例
- Android Service示例
- Android的Service用法示例
- Android自动启动Service示例
- android service 启动关闭 示例
- 简单android Service 创建与启动示例
- android 之 service+contentProvider 音乐播放示例
- Android平台调用Web Service:示例
- Android Native Service简单实现示例
- Android Service远程调用 代码示例
- 50.android服务service-AIDL示例
- Android ApiDemos示例解析(38):App->Service->Foreground Service Controller
- Android ApiDemos示例解析(39):App->Service->Local Service Binding
- Android ApiDemos示例解析(40):App->Service->Local Service Controller
- SQL随机查询语句
- IE和firefox的区别
- PHP生成静态页面
- 市场营销的思考
- 轮渡木马
- Android Service 示例
- 将Tomcat与IIS整合在一起,共用80端口
- 【转】中医英语语料库建设理论与实践
- C语言之memcpy()函数
- pkginfo、pkgadd和pkgrm命令的用法
- 如何在现有的web应用中集成皕杰报表?
- 28种JS图片特效
- 网络数据包发送接收全过程
- 【转】中医汉英双语语料库平台