1. Trang chủ
  2. » Công Nghệ Thông Tin

Lập trình android C12 audio video camera telephone SMS

54 65 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 54
Dung lượng 1,25 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

o Hoàn thành quá trình thu phát... o Hoàn thành quá trình thu... { case TelephonyManager.PHONE_TYPE_CDMA: break;case TelephonyManager.PHONE_TYPE_GSM : break; case TelephonyManager.PHONE_

Trang 1

Audio – Video - Camera –

Telephone - SMS

Ch ng 12

Lê V n H nh

levanhanhvn@gmail.com

Trang 2

N I DUNG

1 Gi i thi u v Media Player

2 Xây d ng Media Player Audio & Video

3 Các đi u khi n trên Media Player

4 Recoding Audio & Video

5 i u khi n ch p hình v i Camera

6 L u t p tin media vào Media Store

7 Telephone

8 SMS

Trang 3

1 GI I THI U V MEDIAPLAYER

• Android cung c p l p MediaPlayer đ qu n lý các tác

v đa truy n thông bao g m các t p tin âm thanh, hình

nh, video

• Có th truy xu t các t p tin media thông qua vi c l u

tr nh tài nguyên ng d ng, b nh thi t b , content

provider ho c thông qua URL

MediaPlayer qu n lý các t p tin media và lu ng x lý

thông qua m t t p các tr ng thái sau:

o Kh i t o đ i t ng MediaPlayer.

o Chu n b b thu phát MediaPlayer.

o B t đ u th c hi n thu phát

o Th c hi n các thao tác Pause và Stop trên t p tin

media trong khi đang thu phát

o Hoàn thành quá trình thu phát

Trang 4

2 XỂY D NG MEDIAPLAYER AUDIO

• Android h tr truy xu t các t p tin Audio thông qua các l u

tr nh : tài nguyên ng d ng, b nh thi t b , content

provider và x lý các lu ng URL.

• Có th đóng gói t p tin Audio vào th m c res/raw nh m t

d ng tài nguyên c a ng d ng.

• thu phát m t t p tin Audio c n t o m t đ i t ng

MediaPlayer và thi t l p ngu n d li u cho đ i t ng này.

Th c hi n thu phát b ng ph ng th c Create() truy n vào 2

tham s : context c a ng d ng và m t trong nh ng d ng tài

nguyên sau:

o nh danh c a tài nguyên.

o URI tr đ n n i l u tr c a t p tin trên thi t b

o URI tr đ n t p tin tr c tuy n thông qua URL.

o URI tr đ n dòng d li u trong b ng c a content provider.

Trang 5

• th c thi vi c thu phát t p tin video c n t o m t màn

hình cho vi c trình chi u Có hai cách đ th c hi n công

vi c này:

o S d ng thành ph n Video View, đóng gói các thao

tác trên đ i t ng MediaPlayer (t o trình chi u,

chu n b và c p phát t p tin) vào trong thành ph n

View này

o Xây d ng màn hình hi n th riêng và g n k t d li u

thông qua đ i t ng MediaPlayer.

Trang 6

• Ví d t o đ i t ng MediaPlayer

• Ví d t o b thu phát b ng Video View

Trang 7

• Ví d t o màn hình hi n th trong Video View

Trang 8

• T o đ i t ng Surface Holder đ h tr vi c c p nh t

các ngu n x lý bên d i

Trang 9

• Kh i t o n i dung c a t p tin c n trình chi u

Trang 10

3 CÁC I U KHI N TRểN MEDIAPLAYER

Kh i ch y đ i t ng b ng ph ng th c start().

Vd: Mediaplayer mediaPlayer = new MediaPlayer();

mediaPlayer.start();

• MediaPlayer cung c p m t s ph ng th c cho vi c

đi u khi n nh getDuration, getCurrentPositon, seekTo

Vd:

Trang 12

• Android cung c p 2 l a ch n trong vi c thu âm thanh và

hình nh:

o S d ng Intent đ kh i ch y ng d ng Video

Camera L a ch n này cho phép ch đ nh n i l u tr ,

đ nh d ng và ch t l ng c a hình nh thu đ c

o S d ng l p Media Recoder đ xây d ng các thành

ph n UI, các thi t l p record cho ng d ng

Trang 13

• S d ng Intent đ thu hình nh: b ng cách truy n action

ACTION_VIDEO_CAPTURE vào m t Intent và g i

Intent này đ n m t Activity khác x lý và tr v k t qu

o EXTRA_OUPUT: cho phép tùy ch n n i l u tr

o EXTRA_VIDEO_QUALITY: cho phép tùy ch n

ch t l ng hình nh thu đ c

Trang 14

• Ví d s d ng Intent đ thu hình nh

Trang 15

• S d ng Media Recorder đ thu âm thanh và hình nh:

c n t o đ i t ng thu c l p MediaRecoder đ s d ng.Vd: MediaRecoder mediaRecorder = new MediaRecorder();

• C n đ ng ký quy n s d ng cho ng d ng trong file

AndroidManifest.xml

Trang 16

MediaRecoder qu n lý các t p tin media và lu ng x lý

thông qua m t t p các tr ng thái sau:

o Kh i t o đ i t ng MediaPlayer

o Ch đ nh ngu n vào c a thi t b thu

o Thi t l p đ nh d ng c a t p tin đ u ra

o Thi t l p các ch s nh : b mã hóa, ch t l ng hình

nh, dung l ng xu t ra

o Ch n t p tin đ xu t

o Chu n b thu âm & hình nh

o Ti n hành thu âm & hình nh

o Hoàn thành quá trình thu

Trang 17

• Ví d t o MediaRecorder

Trang 18

• Ti n hành thu, d ng thu và gi i phóng tài nguyên

• T o màn hình Preview trong lúc record

Trang 19

• T o màn hình Preview trong lúc record

Trang 21

• Ví d s d ng Intent đ l y v d li u c a

ACTION_IMAGE_CAPTURE

Trang 22

• Nh n k t qu tr v và x lý

Trang 23

• C n đ ng ký trong file AndroidManifest đ s d ng

Camera

• Kh i t o đ i t ng Camera đ tùy ch nh và s d ng

Trang 24

• Tùy ch nh Camera thông qua đ i t ng c a Parameter

Trang 25

• T o màn hình Preview

Trang 26

• T o màn hình Preview

Trang 27

• Ví d ti n hành ch p nh và l u trên SDCard

Trang 28

• Ví d ti n hành ch p nh và l u trên SDCard

Trang 29

6 L U T P TIN MEDIA VÀO MEDIASTORE

• Có th l u t p tin media vào MediaStore b ng 2 cách:

o S d ng MediaScanner đ thông d ch t p tin vào thêm vào

Trang 30

• Ví d thêm media b ng Content Provider

Trang 31

• T o cu c g i b ng các s d ng Intent đ g i Dialer có

s n trong thi t b

Vd: Intent intent = new Intent(Intetn.ACTION_DIAL,

Uri.parse(“tel:123456”)); startActivity(intent);

• Th c hi n hành đ ng g i ACTION_CALL b ng cách

nh n nút Call trong thi t b

• M t s thông tin c n thi t cho vi c qu n lý ch c n ng

Phone trên thi t b :

Trang 32

{ case (TelephonyManager.PHONE_TYPE_CDMA): break;

case (TelephonyManager.PHONE_TYPE_GSM) : break;

case (TelephonyManager.PHONE_TYPE_NONE): break;

Trang 33

super.onCallStateChanged(state, incomingNumber); switch(state)

{

case TelephonyManager.CALL_STATE_IDLE : break; case TelephonyManager.CALL_STATE_RINGING : break; case TelephonyManager.CALL_STATE_OFFHOOK : break;

default: break;

} }

………

}

Trang 34

• c d li u k t n i và các thay đ i tr ng thái thông qua

các ph ng th c getDataSet() và getDataActivity().

Trang 35

• c các d li u Network c n thi t:

String networkCountry = telephonyManager.getNetworkCountryIso() ;

String networkOperatorId = telephonyManager.getNetworkOperator() ;

String networkName = telephonyManager.getNetworkOperatorName(); int networkType = telephonyManager.getNetworkType();

switch (networkType) {

case (TelephonyManager.NETWORK_TYPE_1xRTT) : break; case (TelephonyManager.NETWORK_TYPE_CDMA) : break; case (TelephonyManager.NETWORK_TYPE_EDGE) : break; case (TelephonyManager.NETWORK_TYPE_EVDO_0) : break; case (TelephonyManager.NETWORK_TYPE_EVDO_A) : break; case (TelephonyManager.NETWORK_TYPE_GPRS) : break; case (TelephonyManager.NETWORK_TYPE_HSDPA) : break; case (TelephonyManager.NETWORK_TYPE_HSPA) : break; case (TelephonyManager.NETWORK_TYPE_HSUPA) : break; case (TelephonyManager.NETWORK_TYPE_UMTS) : break; case (TelephonyManager.NETWORK_TYPE_UNKNOWN) : break; default: break;

}

Trang 36

{ String simCountry = telephonyManager.getSimCountryIso();

String simOperatorCode =

telephonyManager.getSimOperator(); String simOperatorName =

telephonyManager.getSimOperatorName(); String simSerial =

telephonyManager.getSimSerialNumber(); break;

}

default: break;

}

Trang 37

• Các thay đ i tr ng thái phone đ c qu n lý b i l p

PhoneStateListener

PhoneStateListener phoneStateListener = new PhoneStateListener()

{

public void onCallForwardingIndicatorChanged(boolean cfi) {}

public void onCallStateChanged(int state, String incomingNumber) {} public void onCellLocationChanged(CellLocation location) {}

public void onDataActivity(int direction) {}

public void onDataConnectionStateChanged(int state) {}

public void onMessageWaitingIndicatorChanged(boolean mwi) {}

public void onServiceStateChanged(ServiceState serviceState) {}

public void onSignalStrengthChanged(int asu) {}

}

Trang 38

• C n đ ng ký v i Telephony Manager đ kh i t o các s

ki n mu n l ng nghe đ x lý:

telephonyManager.listen(phoneStateListener,

PhoneStateListener.LISTEN_CALL_FORWARDING_INDICATOR| PhoneStateListener.LISTEN_CALL_STATE |

PhoneStateListener.LISTEN_CELL_LOCATION | PhoneStateListener.LISTEN_DATA_ACTIVITY | PhoneStateListener.LISTEN_DATA_CONNECTION_STATE | PhoneStateListener.LISTEN_MESSAGE_WAITING_INDICATOR | PhoneStateListener.LISTEN_SERVICE_STATE |

PhoneStateListener.LISTEN_SIGNAL_STRENGTH);

• H y đ ng ký b ng LISTEN_NONE

telephonyManager.listen(phoneStateListener,

PhoneStateListener.LISTEN_NONE);

Trang 40

• Ví d đ ng kí trong Intent trong AndroidManifest

Trang 41

• Ví d x lý cu c g i t i

Trang 42

• G i tin nh n MMS có ch a t p tin Media

Vd: //T o tin nh n MMS

Uri attached_Uri =

Uri.parse("content://media/external/images/media/1"); Intent mmsIntent = new

Intent(Intent.ACTION_SEND,attached_Uri); mmsIntent.putExtra("sms_body",

"Please see the attached image"); mmsIntent.putExtra("address", "07912355432");

mmsIntent.putExtra(Intent.EXTRA_STREAM, attached_Uri); mmsIntent.setType("image/png");

startActivity(mmsIntent);

Trang 43

• G i tin nh n MMS có ch a t p tin Media

Vd: //T o tin nh n MMS

Uri attached_Uri =

Uri.parse("content://media/external/images/media/1"); Intent mmsIntent = new

Intent(Intent.ACTION_SEND,attached_Uri); mmsIntent.putExtra("sms_body",

"Please see the attached image"); mmsIntent.putExtra("address", "07912355432");

mmsIntent.putExtra(Intent.EXTRA_STREAM, attached_Uri);

mmsIntent.setType("image/png");

startActivity(mmsIntent);

Trang 44

• SMS tin nh n đ c đi u khi n b i SmsManager

o T o đ i t ng SmsManager

SmsManager smsManager = SmsManager.getDefault();

o Yêu c u quy n truy c p khi g i tin nh n

PendingIntent sentIntent, PendingIntent deliveryIntent)

Vd:

Trang 45

• Theo dõi, xác nh n SMS tin nh n đã đ c g i b ng cách

đ ng ký BroadcastReceiver đ l ng nghe các ho t đ ng t

Pending Itent đ c t o khi g i tin nh n

o sentItent đ c g i lên khi tin nh n đ c g i thành

công hay l i

Activity.RESULT_OK SmsManager.RESULT_ERROR_GENERIC_FAILURE SmsManager.RESULT_ERROR_RADIO_OFF

SmsManager.RESULT_ERROR_NULL_PDU

o deliveryIntent đ c g i lên m t khi thi t b đích nh n

đ c tin nh n

Trang 46

• Ví d v ki m soát g i tin nh n: t o Pending Intent

String SENT_SMS_ACTION = "SENT_SMS_ACTION " ;

String DELIVERED_SMS_ACTION = "DELIVERED_SMS_ACTION " ;

Intent sentIntent = new Intent(SENT_SMS_ACTION);

PendingIntent sentPI =

PendingIntent.getBroadcast(getApplicationContext(),0,

sentIntent,0); Intent deliveryIntent = new Intent(DELIVERED_SMS_ACTION);

PendingIntent deliverPI =

PendingIntent.getBroadcast(getApplicationContext(),0,

deliveryIntent,0);

Trang 47

• Ví d v ki m soát g i tin nh n: t o Broadcast Receiver

case Activity.RESULT_OK : break; case SmsManager.RESULT_ERROR_GENERIC_FAILURE: break; case SmsManager.RESULT_ERROR_RADIO_OFF : break; case SmsManager.RESULT_ERROR_NULL_PDU : break; }

}

},new IntentFilter(SENT_SMS_ACTION));

Trang 48

• Ví d v ki m soát g i tin nh n: t o Broadcast Receiver

}, new IntentFilter(DELIVERED_SMS_ACTION));

smsManager.sendTextMessage(sendTo, null, myMessage, sentPI,

deliverPI);

Trang 49

• X lý các tin nh n dài h n 160 ký t b ng ph ng th cdivideMessage() và sendMultipartTextMessage().

o Cú pháp:

sendMultipartTextMessage(Stringdestination Address,

String scAddress, ArrayList<String> parts, ArrayList<PendingIntent> sentIntents, ArrayList<PendingIntent> deliveryIntents)

o Ví d :

ArrayList<String> messageArray =

smsManager.divideMessage(myMessage); ArrayList<PendingIntent> sentIntents = new

ArrayList<PendingIntent>(); for (int i = 0; i < messageArray.size(); i++)

sentIntents.add(sentPI);

smsManager.sendMultipartTextMessage(sendTo, null,

messageArray sentIntents, null);

Trang 50

• G i tin nh n ch a d li u b ng m ng byte

o Cú pháp:

sendDataMessage(Stringdestination Address,

String scAddress, short destination Port, byte[] data,

PendingIntent sentIntent, PendingIntent deliveryIntent)

byte[] data = [ your data ];

smsManager.sendDataMessage(sendTo, null, destinationPort,

data, sentPI, null);

Trang 51

• ng d ng nh n đ c SMS, c n đ ng kýBroadcastReceiver v i action

Trang 52

• Ví d t o Broadcast Receiver đ nh n tin nh n

Trang 54

• Ví d truy v n l y n i dung các tin nh n trong Inbox.

Ngày đăng: 21/12/2017, 18:59

w