Download as pdf or txt
Download as pdf or txt
You are on page 1of 3

ANDROID NÂNG CAO – Telephony và Media

Bài 1: sửa lại ví dụ chơi nhạc

Làm lại ví dụ chơi nhạc đã trình bài trong slide lý thuyết (page 38-39-40). Sửa lại ví dụ
này cho phép người dùng nhập vào tên file từ SD card (hiện tại Android chưa có default
activity để duyệt file).

Bài 2: Ứng dụng ghi âm

Dựa vào slide lý thuyết (page 45-55), hãy xây dựng ứng dụng cho phép quản lý các file
ghi âm. Ứng dụng gồm các button bắt đầu ghi âm (Start Recording), dừng ghi âm (Stop
Recording) và 1 list view liệt kê các file đã ghi âm với thông tin: tên file, ngày ghi âm,
tác giả. Khi người dùng click và dừng ghi âm thì file ghi âm mới sẽ được cập nhật lên
list view. Khi người dùng click vào 1 item trên listview thì sẽ nghe lại đoạn ghi âm đó.

Bài 3: ứng dụng nhắc nhớ USSD

Dựa trên kiến thức về Telephony, hãy viết 1 activity sử dụng ListView liệt kê các
chuỗi USSD thông dụng của các nhà mạng, mỗi dòng của ListView liệt kê chuỗi USSD
và phần giới thiệu về chuỗi đó. Mỗi khi người dùng chọn USSD, hãy nạp sẵn chuỗi truy
vấn vào call activity để người dùng có thể quay số nếu cần. Một số dịch vụ thông dụng
(VietTel):
1. “*101#”: xem số dư tài khoản
2. “*102#”: xem số dư tài khoản khuyến mãi
3. “*098*21#”: đăng kí MCA
4. “*098*22#”: hủy đăng kí MCA
5. “*098*01#”: xem giá vàng
6. “*098*010#”: xem thời tiết Hà Nội

Bài 4: ứng dụng chặn số trong black list

Dựa trên kiến thức về nhận cuộc gọi trong slide lý thuyết (page 22-23), hãy viết một
receiver nhận cuộc gọi, nếu cuộc gọi tới nằm trong danh sách đã có, tự động ngắt cuộc
gọi.
Chú ý:
Ứng dụng cần các quyền sau để thực hiện chức năng nghe và chặn cuộc gọi
<uses-permission android:name="android.permission.READ_PHONE_STATE"
/>
<uses-permission
android:name="android.permission.MODIFY_PHONE_STATE" />
<uses-permission android:name="android.permission.CALL_PHONE" />
1
Ứng dụng thông thường không thể ngắt cuộc gọi, chúng ta cần làm việc này thông qua
một class ẩn của Android framework, chúng ta sử dụng cơ chế Invoker để làm việc này.
Khai báo file ITelephony.aidl như dưới đây (nếu không biết aidl là gì thì xem lại bài
service ở Android 1).
package com.android.internal.telephony;
interface ITelephony {
boolean endCall();
void answerRingingCall();
void silenceRinger();
}
Lấy về biến kiểu ITelephony từ TelephonyManager như sau, lệnh sau cùng là kết thúc cuộc
gọi:
TelephonyManager telephony = (TelephonyManager)
context.getSystemService(Context.TELEPHONY_SERVI
CE); Class c = Class.forName(telephony.getClass().getName());
Method m = c.getDeclaredMethod("getITelephony");
m.setAccessible(true);

2
telephonyService = (ITelephony) m.invoke(telephony);
telephonyService.endCall();

You might also like