Service = Deamon = Background Program
말그대로 화면없이 뒤에서 실행되는 기능을 말한다.
예를 들어 문자를 보내면서 배경 음악이 나온다면 문자를 보내기 위해 사용자에게 제공되는 Activity 이외에
보이지 않지만 MediaPlayer가 음악을 재생한다. 이것이 android의 service 라고 할 수 있다.

다음은 버튼을 눌렀을때 음악이 재생되는 단순한 예제이다.

res에 raw라는 폴더를 만들고 sorry.mp3를 넣었다. 이에 대한 접근은 다음처럼 R.raw.sorry 로 가능하다.
main.xml에 Button을 만들어놨다. 이전 예제를 수정한거라 android:id = "@+id/btn_message" 이다

RosaActivity.java
package com.rosa.prankapp;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class RosaActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        Log.w("rosa", "PrankAppActivity onCreated()");
        
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        startService(new Intent("com.rosa.service.test"));
        
        Button btn_message = (Button)findViewById(R.id.btn_message);
        btn_message.setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View v) {
                stopService(new Intent("com.rosa.service.test"));
            }
        });        
    }
}

RosaService.java
package com.rosa.prankapp;

import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.IBinder;
import android.util.Log;

public class RosaService extends Service {
    
    private MediaPlayer player;

    @Override
    public IBinder onBind(Intent arg0) {
        return null;
    }
    
    @Override
    public void onStart(Intent intent, int startId) {
        Log.i("rosa", "Service onStart()");        
        //반드시 호출해줘야 함
        super.onStart(intent, startId);        
      player = MediaPlayer.create(this, R.raw.sorry);
      player.start();
    }
    
    @Override
    public void onDestroy() {
        Log.i("rosa", "Service onDestory()");        
        super.onDestroy();
        player.stop();
    }
}


AndroidManifest.xml에 다음 부분을 추가
<service android:name="PrankService">
    <intent-filter>
        <action android:name="com.rosa.service.test"/>
      <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
</service>

실행화면
버튼 누르면 노래재생.
사용자 삽입 이미지

'Android > Tip&Tech' 카테고리의 다른 글

안드로이드(android) ListView + ArrayAdapter ANDROID  (0) 2010.11.04
listview에 버튼넣기  (0) 2010.11.03
AIDL이 뭘까나?  (0) 2010.11.03
Sending SMS Messages  (2) 2010.11.03
ch03애플리케이션과 액티비티 만들기  (0) 2010.11.03

+ Recent posts