Binding Service Example
bindService()
. A bound service offers a client-server interface that allows components to interact with the service, send requests, get results, and even do so across processes with interprocess communication (IPC). A bound service runs only as long as another application component is bound to it. Multiple components can bind to the service at once, but when all of them unbind, the service is destroyed.
Binding Service Example Code
This code get start timer form Binding Service then display on MainActivity.
MainActivity.java Code
This code get start timer form Binding Service then display on MainActivity.
MainActivity.java Code
package
code.example.bindservice;
import
code.example.bindservice.BindService.LocalBinder;
import
android.media.MediaPlayer;
import
android.os.Bundle;
import
android.os.Handler;
import
android.os.IBinder;
import
android.app.Activity;
import
android.content.ComponentName;
import
android.content.Context;
import
android.content.Intent;
import
android.content.ServiceConnection;
import
android.view.View;
import
android.widget.Button;
import
android.widget.TextView;
public class
MainActivity extends Activity {
private MediaPlayer
mMediaPlayer;
TextView tvTimer;
// Handler to handle the message to
the timer task
private Handler mHandler = new Handler();
BindService myService;
boolean isBound = false;
Button btnReset;
Intent intent;
@Override
protected void
onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_now);
intent = new Intent(this,
BindService.class);
bindService(intent, myConnection, Context.BIND_AUTO_CREATE);
tvTimer =
(TextView) findViewById(R.id.textViewTime);
btnReset = (Button)
findViewById(R.id.buttonStop);
btnReset.setOnClickListener(new
View.OnClickListener() {
public void
onClick(View v) {
finish();
}
});
mHandler.removeCallbacks(mUpdateTimeTask);
mHandler.postDelayed(mUpdateTimeTask, 100);
}// onCreate
@Override
protected void onDestroy()
{
super.onDestroy();
if (isBound) {
unbindService(myConnection);
isBound = false;
}
}
private
ServiceConnection myConnection = new
ServiceConnection() {
public void
onServiceConnected(ComponentName className, IBinder service) {
LocalBinder binder =
(LocalBinder) service;
myService =
binder.getService();
isBound = true;
}
public void
onServiceDisconnected(ComponentName arg0) {
myService = null;
isBound = false;
}
};
private Runnable mUpdateTimeTask = new Runnable()
{
public void run() {
String gTime = myService.getTimer();
tvTimer.setText(gTime);
mHandler.postDelayed(this, 200);
}
};
}
BindService.java Code
package
code.example.bindservice;
import
java.text.SimpleDateFormat;
import
java.util.Calendar;
import
android.app.Notification;
import
android.app.NotificationManager;
import
android.app.PendingIntent;
import
android.app.Service;
import
android.content.Intent;
import
android.media.MediaPlayer;
import
android.os.Binder;
import
android.os.IBinder;
import
android.os.SystemClock;
import
android.util.Log;
import
android.widget.Toast;
public class BindService
extends Service {
NotificationManager nm;
MediaPlayer mMediaPlayer;
private long mStartTime = 0L;
private long startFirstTime = 0L;
boolean service = false;
int seconds;
int minutes;
int hour, day;
long millis;
long start;
@Override
public void onCreate()
{
super.onCreate();
nm = (NotificationManager)
getSystemService(NOTIFICATION_SERVICE);
showNotification();
if (mStartTime == 0L) {
mStartTime =
SystemClock.uptimeMillis();
}
}
@Override
public int
onStartCommand(Intent intent, int flags, int startId) {
Log.i("LocalService", "Received
start id " + startId + ": " + intent);
// We want this service to continue
running until it is explicitly
// stopped, so return sticky.
return START_STICKY;
}
@Override
public void onDestroy()
{
// Cancel the persistent
notification.
nm.cancel(0);
// Tell the user we stopped.
Toast.makeText(this, "Service
Stop", Toast.LENGTH_SHORT).show();
}
@SuppressWarnings("deprecation")
private void
showNotification() {
nm = (NotificationManager)
getSystemService(NOTIFICATION_SERVICE);
// Service starting. Create a
notification.
Notification notification = new Notification(R.drawable.ic_launcher,
"Bind
Service", System.currentTimeMillis());
Intent intent = new Intent(this,
MainActivity.class);
PendingIntent destIntent =
PendingIntent
.getActivity(this, 0, intent,
0);
notification.setLatestEventInfo(this, "Bind
Service", "Running ",
destIntent);
notification.flags |=
Notification.FLAG_ONGOING_EVENT;
nm.notify(0, notification);
}
public String
getCurrentTime() {
Calendar c = Calendar.getInstance();
SimpleDateFormat sdf = new
SimpleDateFormat("yy-MM-dd");
return
(sdf.format(c.getTime()));
}
public String
getTimer() {
start = mStartTime;
millis = SystemClock.uptimeMillis() -
start;
seconds = (int) (millis / 1000);
minutes = seconds / 60;
hour = minutes / 60;
day = hour / 24;
seconds = seconds % 60;
return (day + " Day\n" + hour + " Hour\n"
+ String.format("%02d", minutes) + " Min \n"
+ String.format("%02d", seconds) + "
Sec");
}
public class LocalBinder
extends Binder {
BindService getService() {
return
BindService.this;
}
}
@Override
public IBinder
onBind(Intent arg0) {
return mBinder;
}
// This is the object that receives
interactions from clients. See
// RemoteService for a more complete
example.
private final IBinder mBinder = new
LocalBinder();
}
AndroidManifest.xml code
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="code.example.bindservice"
android:versionCode="1"
android:versionName="1.0"
>
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="15"
/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme"
>
<activity
android:name="code.example.bindservice.MainActivity"
android:label="@string/app_name"
>
<intent-filter>
<action android:name="android.intent.action.MAIN"
/>
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service android:name="BindService" />
</application>
</manifest>
Download Bind Service Example Code
สอนเขียน Android สอนเขียนโปรแกรม Android แบบ Online
รับสอนเขียนโปรแกรม Android App สอนแบบ online สอนสด ตัวต่อตัว หรือ เป็นกลุ่ม ได้ทั่วประเทศ กำหนดเวลาเรียนได้
การเรียน Android App แบบ online สามารถกำหนดเวลาเรียน เองได้ ตามแต่ตกลงกัน
( รับสอน นอกสถานที่ แบบเป็น กลุ่ม ทั่วประเทศ )
แต่ละ Course ขึ้นอยู่กับพื้นฐานที่มี นะครับ
Course
1.JAVA Programming สำหรับผู้ที่ยังไม่มีพื้นฐานทางด้าน การเขียนโปรแกรม JAVA
เรียน 3-4 ครั้ง ครั้งละ 2 ชั่วโมง
2.Beginning Android Development เริ่มต้นการพัฒนาด้วย Android ( ต้องมีพื้นฐาน JAVA แล้ว )
เรียน 5-6 ครั้ง ครั้งละ 2 ชั่วโมง
เรียนจบคอร์สนี้ ก็สามารถทำ Application ได้แล้ว
3.Android Application สอนตามความต้องการในการเขียนโปรแกรม ใช้งานจริง เช่น โปรแกรมใช้งานด้านต่างๆ
ระยะเวลา และ ค่าเรียน ตามแต่ความยากง่ายของโปรแกรม ซึ่งอาจจะรวมสอน JAVA Programming ด้วยสำหรับผู้เริ่มต้นเลย
ดังนั้น ราคาสอน จะขึ้นอยู่กับ สเปคงาน
โปรแกรมที่ใช้ทำการเรียน Team Viewer Version ล่าสุด Version 8
Meeting ID จะแจ้งให้ก่อนเรียน ผ่านทาง email sms Line หรือ อื่นๆ ตามสะดวก
ใช้ Tab Meeting ใส่ Meeting ID และใส่ชื่อ
แล้ว Join Meeting
ติดต่อ amphancm@gmail.com
ติดต่อ amphancm@gmail.com