MTC-Keys lập trình điều khiển vô lăng cho đầu MTC

icarvietnam

Administrator
Mô đun cho XPosed: mtc-keys cho phép đặt lại tính năng của các nút bấm trên vô lăng cũng như trên đầu theo ý muốn cho các đầu của Microntek (MTCB, MTCC, MTCD).
Cho phép mở các ứng dụng và thực hiện các tác vụ bằng cách bấm nút vô lăng và trên đầu.
Trước khi sử dụng mô đun Xposed mtc-keys các bạn cần phải cài đặt một số phần mềm và mô đun sau trên đầu:
- Exposed framework : đây là bộ khung nổi tiếng cho phép can thiệp rất sâu vào hệ điều hành android, sau khi cài bộ khung này (bản thân nó ko có tác động gì tới hệ điều hành mà chỉ là bộ giá để ta cài các mô đun thực hiện chức năng ta muốn) chúng ta sẽ cài mô đun mtc-keys (mục đích của bài viết này).
- CarService: Có nhiều chức năng, tuy nhiên ở đây ta dùng để xem mã của nút bấm, các bạn cũng có thể dụng phần mềm key event để xem.
- AppInfoViewer: Dùng để xem tên_gói của một ứng dụng
- mtc-keys: https://drive.google.com/open?id=0BxrXRmcVjBr3YzFmTFotVGRRYk0 : Mô đun chính của mục đích bài viết này, cài vào xposed framwork
- Phần mềm quản lý file với quyền root (ES-Explorer hoặc Root-Explorer chẳng hạn): tạo, xóa thư mục, file...

File cài đặt và định nghĩa các phím bấm phải đặt ở thư mục gốc của thẻ nhớ external_sd trong thư mục mtc-key và phải đặt tên file là mtc-keys.ini (đường dẫn đầy đủ thường là /mnt/sdcard/mtc-keys/mtc-keys.ini hoặc hoặc /mnt/external_sd/mtc-keys/mtc-keys.ini). Tất cả tên file và tên thư mục phải để chữ thường và phải tạo thủ công. Các thông số cài đặt trong file được nạp trong quá trình khởi động.
Lưu ý là với mô đun này, tất cả mọi chữ đều phải viết thường (không được viết hoa một chữ cái nào dù trong dòng lệnh hay tên file hoặc tên thư mục).

Nếu cần thiết phải đặt file cài đặt ở nơi khác thì phải sửa file build.prop:

#Ví dụ cần đặt vào bộ nhớ trong
Mã:
persist.sys.mvgv70.card=/mnt/internal_sd
Bạn có thể gán thuộc tính "toàn cầu" hoặc "cục bộ" cho ứng dụng đang hoạt động bằng cách bấm 1 lần hoặc 2 lần các nút bấm.
Sử lý cục bộ trong ứng dụng đang hoạt động được đặt theo quy cách [tên_gói.số_lần_bấm]
Ví dụ về gán biến cục bộ:
"Bấm 1 lần, tác động chỉ trong ứng dụng Radio"
Mã:
[com.microntek.radio.1]
...
Sử lý toàn cầu được đặt theo quy cách [click.số_lần_bấm]
Ví dụ về gán biến toàn cầu:
"Bấm 1 lần"
Mã:
[click.1]
...
Nếu các bạn muốn gán tác động cho bấm đúp mà vẫn giữ lại tác động bấm 1 lần thì cần bổ sung thêm sự kiện như khi bấm 1 lần. Ví dụ:
Mã:
[click.2]
event_62=62
Để bấm đúp thì cần định nghĩa 1 khoảng thời gian tối đa giữa 2 lần bấm. Thời gian trễ (tính bằng mili giây, ms; 1 ms = 1/1000s). Ví dụ sau thiết lập thời gian tối đa giữa 2 lần bấm để tạo ra lệnh bấm đúp là 0,5s =500ms:
Mã:
[settings]
doubleclick.time=500
Mã:
app_xx=tên_gói
Trong đó:
xx - là mã của nút bấm, tên_gói - là tên của gói ứng dụng được cài đặt.

Ví dụ: Một nút bấm có mã là 42 (nút DVD trên đầu chẳng hạn), giờ ta muốn bấm nút này thì mở ứng dụng bản đồ Yandex (tên gói của ứng dụng này là ru.yandex.yandexmaps. Như vậy ta sẽ phải viết dòng lệnh như sau:
Mã:
app_42=ru.yandex.yandexmaps
Khi nút DVD được bấm, nếu ứng dụng yandexmaps đang chạy nó sẽ được chuyển sang chạy nền và ứng dụng chạy trước đó được hiển thị lên màn hình.

Mã:
activity_xx=tên_gói/tên_lớp
xx- là mã của nút bấm; tên_gói - là tên của gói ứng dụng cài đặt, tên_lớp - là tên đầy đủ của lớp hành động.

Hành động mở ứng dụng cần phải được kích hoạt cài đặt exported="true", hoặc danh sách cài đặt <intent-filter>. Ví dụ với nút Navi có mã số nút là 51:
Mã:
activity_51=com.estrongs.android.pop/com.estrongs.android.pop.view.FileExplorerActivity
như vậy bấm nút Navi sẽ mở ra cửa sổ chính của chương trình ES-Explorer.
Mã:
action_xx=tác_động
xx - mã số của nút bấm tác_động - một trong các phương án từ danh sách: home, menu, back, apps, screenshot, sleep, screenoff, settings.
ví dụ:
Mã:
action_51=apps
Như vậy, khi bấm nút Navi sẽ hiện ra danh sách các ứng dụng được sử dụng gần đây.
Tác dụng của các tác động trong danh sách như sau:
  • home: chuyển về màn hình chính;
  • menu: gọi menu;
  • back: quay lại;
  • apps: hiện danh sách các ứng dụng được chạy gần đây;
  • screenshot: chụp màn hình;
  • sleep: chuyển sang chế độ nghủ, có thể không hoạt động với các phiên bản MCU cũ;
  • screenoff: tắt màn hình, có thể không hoạt động với các phiên bản MCU cũ;
  • switch: chuyển qua lại giữa 2 ứng dụng được mở cuối cùng;
  • settings: đọc lại các tập tin cấu hình mà không cần khởi động lại đầu;
  • null: không làm gì cả.
Mã:
intent_xx=intent
gửi một intent vào hệ thống.
Mã:
event_xx=mã_nút
Mã:
media_xx=play/next/prev
Mã:
keyevent_xx=mã_nút
Xem danh sách mã nút khả dụng tại đây. Một số hằng số KeyEvent.KEYCODE_* có thể không hoạt động trên đầu MTC
Mã:
command_xx=command-shell
Mã:
function_xx=tên_hàm_chức_năng
Phần này không có giải nghĩa, nó chỉ được sử dụng để gọi các chức năng từ máy chủ của Microntek cho các nhà phát triển
Thật không may, do MCU được nhà sản xuất ấn định sẵn sẽ gửi ngay 2 sự kiện khi ta vừa bấm nút đó là: (1) sự kiện bấm nút và (2) sự kiện nhả nút. Mặc dù nút bấm thực tế vẫn chưa được nhả ra. Do vậy tính năng bấm giữ "Long-press" không thể thực hiện được
Mã của phím bấm có thể xem bằng ứng dụng Logcat đọc giá trị cho mtc-keys tại vị trí keyCode=xx.
Một số nút cứng vật lý (ví dụ Eject) chỉ là phím cơ học (không có liên hệ về mạch điện với phím) và hoàn toàn không thể lập trình được.
Trình trợ giúp cài đặt không có, vì vậy các bạn cần sử dụng chương trình PackageViewer để xác định "tên_gói" và các activity của ứng dụng. Một số phần mềm có tác dụng làm việc này như: 1 - packageviewer; 2- pkgnameviewer; 3 - packageviewer

+ Sử dụng nút next/prev để tiến bài/lùi bài cho ứng dụng nghe nhạc mà vẫn giữ nguyên tác dụng với ứng dụng radio:
Mã:
[click.1]
media_58=next
media_59=prev

[com.microntek.radio.1]
event_58=58
event_59=59
+ Bấm nút Mute trên đầu hoặc vô lăng sẽ thực hiện hành động Play/Pause cho ứng dụng nghe nhạc
Mã:
[com.microntek.music.1]
event_4=3
+ Bấm nút mute trong ứng dụng PowerAMP sẽ tác động play/pause
Mã:
[com.maxmpz.audioplayer.1]
media_4=play
+ Ví dụ tổng hợp các chức năng của mô đun mtc-keys:
Mã:
#one-click of a button
[click.1]
action_4=back
app_3=com.maxmpz.audioplayer
app_42=com.dailyroads.v

#double-click of a button
[click.2]
app_51=pl.aqurat.automapa
#activity_46=com.maxmpz.audioplayer/com.maxmpz.audioplayer.API_COMMAND
#activity_45=com.maxmpz.audioplayer/com.maxmpz.audioplayer.API_COMMAND

[settings]
# Time in milliseconds
doubleclick.time=500

#action_51 = apps
#Navi button assigned to the call list of the latest applications.


#    xx is the KEY CODE
#    app_xx = name of the package                 - to launch an app (use Installed Package Viewer from GP to determine the names)
#    activity_xx = name of the package / class name         - to use specific action within an app
#    action_xx = action                    - to perform one of the actions listed below:
#           You can cycle in a limited fashion, (only actions can be cycled, cycling apps or mixed apps and actions won't work) e.g.
#           "action_74 = home
#           action_74 = apps
#           action_74 = menu"
#         home:         Go to the home screen;
#         menu:         Call up menu;
#         back:         push back;
#         apps:         access the list of running applications;
#         screenshot:     screenshot of the screen;
#         sleep:         sleep mode, may not work on older MCU;
#         screenoff:     Turn off the screen, may not work on older MCU;
#         switch:     switch between two last applications;
#         settings:     configuration file read without restarting the State;
#         null:         do nothing.
#    intent_xx = intent                        - to send a broadcast intent
#    event_xx = button code                         - to remap physical buttons
#    media_xx = play / next / prev                    - to control third-party player
#    keyevent_xx = button code                    - to emulate standard softkey (refer to KEYCODE_ from https://developer.android.com/reference/android/view/KeyEvent.html)
#    command_xx = command shell                    - to start shell-command as root
#    function_xx = function name                    - to call functions from MicrontekServer without parameters. Without explanation, and list. Only for developers.


#--- KEY CODES ---
# Some buttons (eg Eject) are hardware and can not be intercepted by pressing the program.

# 2 the MODE, switch between full-time applications ( "Radio", "Music", etc.)
# 27 VOL-, Volume Down
# 19 VOL +, the volume Increase
# 4 MUTE, mute / unmute sound
# 23 configuration Call of sound modes and EQ
# 42 DVD, Launch an application "DVD"
# 43 RADIO, BAND, Run the application "Radio" (repeated pressing - range switching)
# ---
# 44 LOUD, Enable / disable LOUDNESS
# 45 PREV, Previous track, previous tuned radio station, the previous DVD chapter
# 46 the NEXT, next track, the next radio station tuned, the next DVD chapter
# 58 TUNE DOWN, rollback ago, the search for a radio frequency step downwards
# 59 TUNE UP, Preroll forward search radio frequency step upward
# 69 BLUETOOTH, Run the application "Handsfree"
# 70 HANGUP, put down the phone and end a call
# 80 PICKUP, lift the handset to answer the call
# ---
# 49 EQ, switch between equalizer presets
# 50 Disconnect app "Handsfree" (in fact does not work)
# 51 GPS, Starting the navigation application
# 72 AUX, Run the application "External power" (AV-In)
# 57 HOME, go to the home screen
# 73 DTV, Application launch, "Digital TV"
# 67 (presumably) Run the screen calibration (for resistive screens)
# 74 SETUP, Launch "Settings"
# 84 MUSIC, an application Running the "Music"
# 85 Switching between the screen brightness settings
# 3 PLAYPAUSE, Play / Pause
# 13 PLAYSTOP, Stop
# ---
# When running the radio
# 5.43 - The next range
# 88 - On / Off.. TA
# 87 - On / Off.. AF
# 77 - Auto without saving (Intro) with increasing frequency since the beginning of the range
# 62 - The next channel
# 61 - Previous channel
# 22.63 - Searching with decreasing frequency
# 24.64 - search with increasing frequency
# 29 - Switch to Channel 1
# 30 - Switch to Channel 2
# 31 - Switch on Channel 3
# 32 - Switch to Channel 4
# 33 - Switch on Channel 5
# 34 - Switch on channel 6
# 18 - On / Off.. ST (stereo)
# 21 - On / Off.. LOC
# 17 - Auto (?) - It is not clear how it works
# ---
# When the application is running "Handsfree"
# 69 - Go to the dialer
# 70 - Hang up
# 80 - Off-hook
# 3 - Play / Pause music
# 6,22,45,61 - Previous track / the beginning of a track (music)
# 14,24,46,62 - Next track (music)
# 13 - Stop (Music)
# 59 - Preroll (music)
# 58 - rollback (music)
# 38 - Press the digit 0
# 29 - Press the number 1
# 30 - Press the number 2
# 31 - Press the number 3
# 32 - Press the number 4
# 33 - Press the number 5
# 34 - Press the number 6
# 35 - Press the number 7
# 36 - Press the number 8
# 37 - Press the digit 9
[nguồn: http://4pda.ru/forum/index.php?showtopic=704299&st=0#entry39969383]

Nhật ký thay đổi theo các phiên bản MTC-KEY
Phiên bản 1.1 – Sửa một số lỗi nhõ;
Phiên bản 1.2 – Hỗ trợ Andoid 4.4;
Phiên bản 1.3 – Thay đổi thuật toán quay lại từ các ứng dụng đã gọi;
Phiên bản 1.4 – Thay đổi thuật toán gọi ứng dụng, bổ sung hỗ trợ cho phần mềm thay đổi âm lượng theo tốc độ;
Phiên bản 2.0 – Thêm các biến: action, activity, intent;
Phiên bản 2.1 – Thêm khả năng đọc file cài từ thẻ external_sd;
Phiên bản 2.2 – Thêm khả năng cấp lệnh cho nút qua biến event;
Phiên bản 2.3 – Sửa lỗi cho Android 4.4;
Phiên bản 2.4 – Trong trường hợp lỗi đọc file cài đặt, nó được đọc sau khi lắp thẻ nhớ ngoài;
Phiên bản 2.5 – Nâng cao độ ổn định của phần mềm;
Phiên bản 2.6 – Thêm action sleep, thay đổi thuật toán đọc file cài đặt;
Phiên bản 2.7 – Bỏ hỗ trợ Android 4.2, file cài đặt phải để trong thẻ nhớ ngoài;
Phiên bản 2.8 – Thêm biến gọi: media, keyevent, command, thay đổi thuật toán xử lý activity;
Phiên bản 2.9 - Thêm action sreeenoff;
Phiên bản 2.10 - Thêm khả năng đọc cài đặt sau khi cắm thẻ nhớ ngoài;
Phiên bản 2.11 – Thêm khả năng gọi hàm trong mà không cần tham số;
Phiên bản 2.12 – Thay đổi trong biến gọi media;
Phiên bản 2.13 – Sửa lỗi trong biến gọi event;
Phiên bản 3.0 – Thêm chức năng bấm đúp cho nút;
Phiên bản 3.1 – Sửa lỗi;
Phiên bản 3.2 – Sửa lỗi;
Phiên bản 4.0 – Cài đặt bấm nút cho các ứng dụng khác nhau;
Phiên bản 4.1 – Tinh chỉnh lại phần mềm;
Phiên bản 4.2 – Thêm khả năng chọn lưu trữ cho file cài (không hoạt động);
Phiên bản 5.0 - Tối ưu thuật toán làm việc và hỗ trợ Android 5.1.1;
Phiên bản 5.1 – Bổ sung hỗ trợ nền tảng MTCD;
Phiên bản 5.2 – Tối ưu ứng dụng.
 
Sửa lần cuối:
Top