วันเสาร์ที่ 26 ตุลาคม พ.ศ. 2556

Binding Service Example



Binding Service Example





Bound
A service is "bound" when an application component binds to it by calling 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
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