기말 정리 2) Broadcast Receiver
2019. 6. 13. 14:09
Broadcast Receiver
: 시스템 또는 다른 Activity의 메시지를 수신할 때 사용 가능
- 안드로이드 운영체제 혹은 다른 액티비티가 뿌리는 메시지를 받을 수 있는 기능
- 안드로이드는 정보를 뿌림 -> 아무도 안 받는다고 해서 문제가 되지 않기 때문에 BroadCast 사용
- 폰에 설치되어 있는 모든 앱에 메시지를 뿌리진 않음
- AndroidManifest에도 등록 가능 (서비스 등이 돌아가서 화면이 실행되지 않더라도 그 메시지를 받아야 할 때)
실습 1) Bluetooth On/Off 감지하기 - 문자보내기 이어서 만들면 OK
AndroidManifest.xml
<uses-permission android:name="android.permission.BLUETOOTH" /> 추가
MainActivity.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
package com.example.soyoung.finalpr;
import android.Manifest;
import android.bluetooth.BluetoothAdapter;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Build;
import android.support.annotation.NonNull;
import android.support.v4.content.ContextCompat;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.util.Log;
import android.view.View;
import android.webkit.WebView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
private BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.d("Receiver", "onRecieve");
int state = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, -1);
// get*Extra() 메서드로 인텐트에 포함된 추가 정보 얻을 수 있음
// 예) getStringExtra() -> 문자열 | getIntExtra -> 정수 반환
// EXTRA_STATE : 현재 상태 | EXTRA_PREVIOUS_STATE : 이전 상태
switch (state) {
case BluetoothAdapter.STATE_ON:
Log.d("Receiver", "Bluetooth ON");
break;
case BluetoothAdapter.STATE_OFF:
Log.d("Receiver", "Bluetooth OFF");
break;
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
protected void onStart() {
super.onStart();
IntentFilter filter = new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED);
// ACTION_STATE_CHANGED : 블루투스 상태변화 액션
// IntentFilter가 필요할 때 : 암시적 인텐트를 통해 사용자로 하여금 어느 앱을 사용할지 선택하도록 하고자 할 때
registerReceiver(receiver, filter);
}
@Override
protected void onStop() {
super.onStop();
unregisterReceiver(receiver);
}
|
'STUDY > Android' 카테고리의 다른 글
기말 정리 3) Service (0) | 2019.06.17 |
---|---|
안드로이드 스튜디오 apk 파일로 만들기 (0) | 2019.06.15 |
기말 정리 1) Permission (0) | 2019.06.13 |
[화면 전환 앱 만들기] (0) | 2019.04.19 |
클래스 파일 오류 났을 때 대처법 - failed linking file resources. (0) | 2019.04.19 |