Compare commits
27 Commits
main
..
64fcaca6be
| Author | SHA1 | Date | |
|---|---|---|---|
| 64fcaca6be | |||
| 173dd2c60e | |||
| 43b3d00930 | |||
| 8faa6ba898 | |||
| ef996427cb | |||
| 7207afe50f | |||
| 78bd883d3c | |||
| 1f2248351d | |||
| 2bd6cfef55 | |||
| 3d00741e7b | |||
| 685019aed5 | |||
| 1e9cbef708 | |||
| 2a9dc1f736 | |||
| f7de593ab1 | |||
| dde8ac0337 | |||
| 502a215167 | |||
| 0c587685a5 | |||
| adbfb43a48 | |||
| 6156bc7bb3 | |||
| 97ddcd2699 | |||
| 749a30735e | |||
| fdb734e148 | |||
| 196fe1ce0c | |||
| 7eadcc67f1 | |||
| 58b1dcd170 | |||
| 7625bdd37b | |||
| d36007d989 |
Binary file not shown.
@@ -0,0 +1,58 @@
|
|||||||
|
Màn hình khóa
|
||||||
|
Mở cài đặt Wi-Fi.
|
||||||
|
Mở rộng
|
||||||
|
33 phút trước
|
||||||
|
CS_VOUCHER HỜI TRÊN LiVeSM802
|
||||||
|
Bật
|
||||||
|
Tắt tiếng
|
||||||
|
VPN bật.
|
||||||
|
Máy quét
|
||||||
|
Wifi-Khach
|
||||||
|
Xóa tất cả thông báo.
|
||||||
|
2755.0
|
||||||
|
Mở cài đặt Bluetooth.
|
||||||
|
Chụp ảnh màn hình
|
||||||
|
Shopee
|
||||||
|
1 phút trước
|
||||||
|
Đèn flash
|
||||||
|
Chế độ máy bay
|
||||||
|
Quay lại
|
||||||
|
•
|
||||||
|
Tín hiệu Wi-Fi đầy.
|
||||||
|
Đang sạc pin, 98 phần trăm.
|
||||||
|
Wi-Fi,Bật,Tín hiệu Wi-Fi đầy.,Wifi-Khach
|
||||||
|
Vẫn còn 4 thông báo.
|
||||||
|
Chuông báo rung.
|
||||||
|
Khóa hướng màn hình
|
||||||
|
Tắt tiếng,Bật
|
||||||
|
Độ sáng màn hình
|
||||||
|
VOUCHER 25% ĐỘC QUYỀN Ở ĐÂY!
|
||||||
|
Dữ liệu di động
|
||||||
|
Th 3, 21 Thg 7
|
||||||
|
+4
|
||||||
|
Đang đến gần bạn!
|
||||||
|
✨Tại Live Tựu Trường Hết Ý ..Thời trang giảm đến 50% ..️Freeship tận tay không tốn phí ..Vào Live săn ngay!
|
||||||
|
NGÀY HỘI THÀNH VIÊN SẮP HẠ MÀN
|
||||||
|
9:28
|
||||||
|
Bluetooth
|
||||||
|
Đèn flash,Tắt
|
||||||
|
Báo cáo vị trí bật.
|
||||||
|
Chế độ Chế độ chân dung,Tự động xoay màn hình
|
||||||
|
98
|
||||||
|
Bluetooth,Tắt
|
||||||
|
..Loạt deal giảm đến 50% đang vơi ..Hoàn xu đến 800K vẫn sẵn sàng ..Mã giảm đến 700K, Freeship đợi bạn ..Vài tiếng sale cuối - Tận hưởng tối đa!
|
||||||
|
Độ sáng tự động
|
||||||
|
Chế độ máy bay,Tắt
|
||||||
|
Vị trí
|
||||||
|
Tắt
|
||||||
|
Tận hưởng dịch vụ giao hàng tận nơi độc quyền!
|
||||||
|
4G Tín hiệu điện thoại đầy.
|
||||||
|
Dữ liệu di động,Bật,Tín hiệu điện thoại đầy.
|
||||||
|
Thiết bị đã kết nối WireGuard
|
||||||
|
Trang 1/3
|
||||||
|
Tổng quan
|
||||||
|
Xem Bụi leather - Đồ da cao cấp live ngay nào!
|
||||||
|
Cài đặt
|
||||||
|
Trang chính
|
||||||
|
Độ sáng tự động,Bật
|
||||||
|
Hôm nay: 499,4KB Tháng này: 57,1MB
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
let groups = [];
|
||||||
|
let links = document.querySelectorAll('a[href*="/groups/"]');
|
||||||
|
links.forEach(a => {
|
||||||
|
let url = a.href.split('?')[0];
|
||||||
|
let name = a.innerText.trim();
|
||||||
|
|
||||||
|
let match = url.match(/\/groups\/([^\/]+)\/?$/);
|
||||||
|
if(name && !name.includes("Joined") && match) {
|
||||||
|
let groupId = match[1];
|
||||||
|
groups.push(name + "\t" + groupId);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
let uniqueGroups = [...new Set(groups)];
|
||||||
|
console.log("TÊN NHÓM \t GROUP ID (Hoặc Tên Tùy Chỉnh)");
|
||||||
|
console.log(uniqueGroups.join('\n'));
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
{"web":{"client_id":"745351236177-ibrcl3j2d9oi2malj3fpatfu6il2290b.apps.googleusercontent.com","project_id":"affilatebot","auth_uri":"https://accounts.google.com/o/oauth2/auth","token_uri":"https://oauth2.googleapis.com/token","auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs","client_secret":"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","redirect_uris":["https://affiliate.victorphan.net/rest/oauth2-credential/callback"]}}
|
||||||
@@ -0,0 +1,95 @@
|
|||||||
|
Ăn vặt vũng tàu 24/25, 1497333118553115
|
||||||
|
Cần Thơ măm măm 24h., 572825778143458
|
||||||
|
Thanh lý mua bán đồ, 629660232000071
|
||||||
|
CHỢ ĐỒ CŨ-HÀNG, 5116351588414894
|
||||||
|
Chợ Cà Mau, 3421649678115956
|
||||||
|
ĂN VẶT CẦN THƠ 24H, 173706033367028
|
||||||
|
Ăn Vặt Sóc Trăng, 848035632341282
|
||||||
|
Cần Thơ Măm Măm 24/24, 2370776542951057
|
||||||
|
Chợ mua bán đồ cũ 430296077181226
|
||||||
|
Chợ Cà Mau, 338006706614899
|
||||||
|
Tôi Dân Cà Mau, 3110438062542965
|
||||||
|
Chợ Cà Mau, 596173160452194
|
||||||
|
Cộng Đồng Affiliate Shopee Lớn Nhất Tại Việt Nam, 242605124320242
|
||||||
|
Affiliate Shopee - Nơi rải link Tiếp Thị Shopee, 421826749413367
|
||||||
|
Affiliate Shopee Nhập Môn, 473456827330829
|
||||||
|
Kinh Nghiệm Du Lịch Đà Nẵng - Review Đà Nẵng Ăn gì, Ở Đâu, reviewdanang2025
|
||||||
|
RẠCH GIÁ TẤT TẦN TẬT, rachgiatattantat
|
||||||
|
CHỢ CAO LÃNH - ĐỒNG THÁP, 655766718454442
|
||||||
|
Ăn vặt uy tín Long Xuyên, anvatuytinlongxuyenreal
|
||||||
|
Review Đà Lạt - Homestay, Khách Sạn, Villa Đà Lạt Đẹp View Đồi Núi Săn Mây, reviewdalat.homestaydalat
|
||||||
|
Hóng Hớt Cần Thơ, honghotcantho123
|
||||||
|
ĂN UỐNG TÂN AN - LONG AN 🥑🎂🍓🍔🥭🍰, 1749573821890252
|
||||||
|
Ăn Vặt Online Trà Vinh 962731445405177
|
||||||
|
Tâm Sự, Tư Vấn Tình Yêu, Hôn Nhân & Gia Đình 🇻🇳, 328562636360308
|
||||||
|
Tôi Dân Cà Mau, 3110438062542965
|
||||||
|
Đăkmil Quê Ta, dakmilquetoi
|
||||||
|
Khách Sạn giá rẻ Vũng Tàu, 1207619936588032
|
||||||
|
Săn Sale Link kiện PC Shopee và Lazada, 1014900549635958
|
||||||
|
Ăn Vặt Châu Đốc, 1359322700819562
|
||||||
|
RẢI LINK SHOPEE AFFILIATE, 7782475288460301
|
||||||
|
Review Đà Nẵng, 597569737344033
|
||||||
|
Tâm Sự Ngành Nail, 370491764306206
|
||||||
|
VŨNG TÀU REVIEW TẤT TẦN TẬT ✅, 195799853355650
|
||||||
|
REVIEW DU LỊCH ĐÀ NẴNG, 181607847304285
|
||||||
|
CỘNG ĐỒNG RẠCH GIÁ AN GIANG KIÊN GIANG, 3736501113143492
|
||||||
|
CHỢ CAO LÃNH, 426831766836573
|
||||||
|
ĂN VẶT KCN LONG HẬU-THỦ THỪA-LONG AN, 3710883445705693
|
||||||
|
Chợ Trà Vinh, 511803968893402
|
||||||
|
Review Đà Lạt - Homestay Đà Lạt, Khách Sạn, Villa Đà Lạt Nguyên Căn Giá Rẻ reviewdalathomestaygiareviewdep
|
||||||
|
Ăn Vặt Uy Tín Long Xuyên, 862910935508907
|
||||||
|
Ăn Vặt Sóc Trăng, 417603265861589
|
||||||
|
Ăn Vặt Uy Tín Long Xuyên, 228858165051760
|
||||||
|
ăn vặt kcn giao long, 644273129041924
|
||||||
|
Affiliate Shopee - Rải Link Tiếp Thị Liên Kết Shopee Free, 707398030832550
|
||||||
|
Học Nails , Nơi Dạy Nail Uy Tín ✅, 1880877502165058
|
||||||
|
ĂN VẶT VŨNG TÀU ( SHIP LIỀN ), anvatvungtau1
|
||||||
|
Ăn vặt Cao Lãnh, 135165835217887
|
||||||
|
ĂN VẶT VĨNH LONG (CÓ SHIP), 805246494950207
|
||||||
|
Chợ Rạch Sỏi - Tỉnh Kiên Giang, chominhluong
|
||||||
|
Thanh lý đồ Cà Mau ✅, 332839668362355
|
||||||
|
Đà Lạt Review Tất Tần Tật DALATREVIEW
|
||||||
|
Hội Kiếm Tiền Shopee Affiliate, 392859729845376
|
||||||
|
Tâm Sự Hôn Nhân Và Gia Đình, 866588296869197
|
||||||
|
TÂM SỰ EVA- TƯ VẤN TÂM LÝ, HÔN NHÂN , GIA ĐÌNH, 7079703495475311
|
||||||
|
Ăn Vặt Online Trà Vinh, 615659449448127
|
||||||
|
Review Đà Lạt - Homestay, Khách Sạn, Villa Đà Lạt Đẹp View Đồi Núi Săn Mây, 959914531041743
|
||||||
|
CỘNG ĐỒNG RẠCH GIÁ AN GIANG KIÊN GIANG, 3736501113143492
|
||||||
|
CHỢ ĐỒ CŨ-HÀNG THANH LÝ CẦN THƠ, 5116351588414894
|
||||||
|
CHỢ CẦN THƠ, 1876611229179972
|
||||||
|
Chợ Cần Thơ - Mua Bán Online chocanthoofficial
|
||||||
|
Chợ Tốt Cần Thơ ✅ chtotcantho
|
||||||
|
Chợ Ăn Vặt Đại Lãnh, 283033250258962
|
||||||
|
Chợ Cao Lãnh - Tỉnh Đồng Tháp, 1187789018470634
|
||||||
|
CHỢ ONLINE ĐỒNG THÁP, 1054187581389446
|
||||||
|
ăn vặt Sa Đéc, 136406967016411
|
||||||
|
CHỢ CAO LÃNH - ĐỒNG THÁP, 2348431725348493
|
||||||
|
Ăn Uống Đồng Tháp, 353231975532723
|
||||||
|
Ăn Vặt Lai Vung Đồng Tháp, 2261761367369455
|
||||||
|
Ăn Vặt Online Cái Tàu Hạ, Đồng Tháp — Vĩnh Long, 166024604043987
|
||||||
|
RAO VẶT LẤP VÒ - ĐỒNG THÁP, raovatlapvodongthap
|
||||||
|
Ăn Uống Cao Lãnh, anvatcaolanh1
|
||||||
|
Cộng Đồng Rao Vặt Đồng Tháp, cdrvdongthap
|
||||||
|
Ăn Vặt Cao Lãnh, hongbiendongthap
|
||||||
|
ĂN VẶT CHỢ GẠO MỸ THO ĐỒNG THÁP ✅, anvatdongthapshiplien
|
||||||
|
Chợ Đồng Tháp ✅( Chợ Đồng Tháp Online ), 772470474858678
|
||||||
|
Ăn Vặt Cao Lãnh, 704426995252185
|
||||||
|
CHỢ ĐỒNG THÁP, 1154424565221508
|
||||||
|
Chợ Tháp Mười - Đồng Tháp, 1663373727229050
|
||||||
|
Ăn Vặt Cao Lãnh, anvatcaolanh2
|
||||||
|
Ăn Vặt Cao Lãnh, 271029338343387
|
||||||
|
ĂN VẶT TRÀM CHIM - ĐỔNG THÁP, 232330018803497
|
||||||
|
ĂN VẶT TP CAO LÃNH, 956409425224117
|
||||||
|
CHỢ MỸ AN THÁP MƯỜI ĐỒNG THÁP, 1461095211123439
|
||||||
|
Ăn Vặt. Đồng Tháp (KV Cao Lãnh_Sa Đéc), 883127661805353
|
||||||
|
ĂN VẶT MỸ AN-THÁP MƯỜI, 309392377707744
|
||||||
|
Đồ Ăn Vặt Phú Hựu (Châu Thành - Đồng Tháp), 998378524283834
|
||||||
|
Ăn Vặt Sa Đéc, 2771740649687097
|
||||||
|
Ăn Uống Vặt Sa Đéc, 1678311673584109
|
||||||
|
Review ăn uống Cao Lãnh - Đồng Tháp, 999963175131213
|
||||||
|
Ăn Vặt - Nha Mân- Châu thành, Đồng tháp, 222119523220787
|
||||||
|
Ăn Vặt Tân Hồng Đồng Tháp, 1962459277563519
|
||||||
|
Ăn Vặt - Đồ Uống 🍪🌮🍔 SA ĐÉC, ĐỒNG THÁP, 2839443379519183
|
||||||
|
Ăn & Uống Mỹ An - Tháp Mười - Đồng Tháp, 910566953378204
|
||||||
|
ĂN VẶT ĐỒNG THÁP - ship đồ ăn Đồng Tháp, 423801127771828
|
||||||
|
ĂN SẬP ĐỒNG THÁP, ansapdongthap
|
||||||
BIN
Binary file not shown.
|
After Width: | Height: | Size: 96 KiB |
BIN
Binary file not shown.
|
After Width: | Height: | Size: 115 KiB |
BIN
Binary file not shown.
|
After Width: | Height: | Size: 323 KiB |
BIN
Binary file not shown.
|
After Width: | Height: | Size: 162 KiB |
BIN
Binary file not shown.
|
After Width: | Height: | Size: 101 KiB |
@@ -0,0 +1,99 @@
|
|||||||
|
# Bot Affiliate & Auto Comment - N8N Integration API
|
||||||
|
|
||||||
|
Đây là máy chủ API viết bằng Python (FastAPI + UIAutomator2) dùng để điều khiển điện thoại Android tự động thực hiện các thao tác:
|
||||||
|
1. **Shopee Affiliate**: Nhận link sản phẩm, tự động mở Shopee, chuyển đổi link lấy hoa hồng và trả về n8n.
|
||||||
|
2. **Facebook Auto Comment**: Mở Group Facebook, tự động tìm bài viết, comment nội dung kèm hình ảnh động từ n8n.
|
||||||
|
|
||||||
|
## 1. Cài đặt và Khởi động
|
||||||
|
Dự án yêu cầu cài đặt môi trường ảo (venv) và các thư viện trong `requirements.txt`.
|
||||||
|
|
||||||
|
**Khởi động Server:**
|
||||||
|
Máy chủ đã được cài đặt như một Systemd Service (chạy ngầm tự động).
|
||||||
|
- Bắt đầu service: `systemctl start shopeebot`
|
||||||
|
- Xem trạng thái: `systemctl status shopeebot`
|
||||||
|
- Khởi động lại khi sửa code: `systemctl restart shopeebot`
|
||||||
|
- Xem log hoạt động: `journalctl -u shopeebot -f` hoặc xem file `shopee_bot.log`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. Các API Endpoints cho N8N
|
||||||
|
|
||||||
|
### 2.1. API Lấy link Shopee Affiliate
|
||||||
|
- **URL**: `POST /get_commission`
|
||||||
|
- **Body (JSON)**:
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"link": "https://s.shopee.vn/...",
|
||||||
|
"device_ip": "10.160.138.2:5555"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
*(Lưu ý: `device_ip` là tùy chọn, nếu bỏ trống Bot sẽ tự lấy IP mặc định)*
|
||||||
|
|
||||||
|
- **Kết quả trả về**:
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"status": "success",
|
||||||
|
"commission": "10.5%",
|
||||||
|
"affiliate_link": "https://s.shopee.vn/xyz...",
|
||||||
|
"price": "đ90.000",
|
||||||
|
"message": "Trích xuất thành công"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2.2. API Tự động Comment Facebook
|
||||||
|
- **URL**: `POST /post_facebook_comment`
|
||||||
|
- **Body (JSON)**:
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"device_ip": "10.160.138.2:5555",
|
||||||
|
"group_id": "123456789",
|
||||||
|
"content": "Nội dung comment mà bạn muốn gõ...",
|
||||||
|
"image_url": "https://example.com/anh.jpg"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
*(Lưu ý: `image_url` là tùy chọn, nếu bài nào không cần ảnh thì không cần gửi trường này).*
|
||||||
|
|
||||||
|
- **Luồng hoạt động**:
|
||||||
|
1. Python tải ảnh về và đẩy vào thư viện Android.
|
||||||
|
2. Dùng Deep Link mở thẳng vào Group.
|
||||||
|
3. Bấm "Bình luận" ở bài viết đầu tiên.
|
||||||
|
4. Gõ Text, chọn ảnh vừa tải và bấm "Gửi".
|
||||||
|
5. Xóa ảnh tạm để dọn dẹp bộ nhớ.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. Quản lý Màn Hình Điện Thoại (Chống chạm nhầm)
|
||||||
|
|
||||||
|
Để điện thoại chạy Auto mượt mà 24/7 mà không bị ai chạm nhầm vào màn hình và không tốn pin, hãy dùng 2 script có sẵn:
|
||||||
|
|
||||||
|
1. **Tắt đen màn hình & Khóa cảm ứng**:
|
||||||
|
Chạy lệnh: `./disable_screen.sh`
|
||||||
|
*(Màn hình vật lý sẽ đen thui, không thể bấm, nhưng Bot vẫn chạy ngầm bên trong)*
|
||||||
|
|
||||||
|
2. **Bật lại màn hình bình thường**:
|
||||||
|
Chạy lệnh: `./enable_screen.sh`
|
||||||
|
|
||||||
|
3. **Chống điện thoại tự khóa (Sleep/Lock screen)**:
|
||||||
|
Chạy lệnh ADB sau để ép điện thoại thức vĩnh viễn:
|
||||||
|
```bash
|
||||||
|
adb -s 10.160.138.2:5555 shell svc power stayon true
|
||||||
|
```
|
||||||
|
*(Muốn tắt chức năng này thì đổi chữ `true` thành `false`).*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
💡 Mẹo thiết lập trên n8n: Thay vì phải nhớ từng ID, bạn nên lập một file Google Sheet.
|
||||||
|
Google Sheet: https://docs.google.com/spreadsheets/d/1Oje_uRqSd3pKf0hrE5M10Aqq9gEp-qHvGmtIkrq86fU/edit?usp=sharing
|
||||||
|
(Tên Group Group ID Content Link hình đính kèm)
|
||||||
|
|
||||||
|
|
||||||
|
Cột A: Tên Group (Để bạn tự nhớ).
|
||||||
|
Cột B: Group ID (Dãy số).
|
||||||
|
Cột C: Link bài viết (Nếu cần lưu). Sau đó cho n8n đọc Google Sheet này, lấy giá trị ở Cột B rồi bắn sang cho Python Bot. Chạy vòng lặp (Loop) là Bot sẽ tự động nhảy hết từ Group này sang Group khác để rải Comment!
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Client ID: 745351236177-ibrcl3j2d9oi2malj3fpatfu6il2290b.apps.googleusercontent.com
|
||||||
|
Client secret: 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
|
||||||
|
( C:\Users\NASPC\Documents\botAffilate\facebook\client_secret_745351236177-ibrcl3j2d9oi2malj3fpatfu6il2290b.apps.googleusercontent.com.json )
|
||||||
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,148 @@
|
|||||||
|
import logging
|
||||||
|
import uiautomator2 as u2
|
||||||
|
import time
|
||||||
|
import re
|
||||||
|
|
||||||
|
class ShopeeBot:
|
||||||
|
def __init__(self, device_ip: str):
|
||||||
|
logging.info(f"Đang kết nối tới thiết bị {device_ip}...")
|
||||||
|
self.d = u2.connect(device_ip)
|
||||||
|
logging.info("Kết nối thành công!")
|
||||||
|
|
||||||
|
def get_commission_rate(self, url: str) -> str:
|
||||||
|
try:
|
||||||
|
# 1. Đảm bảo màn hình sáng
|
||||||
|
self.d.screen_on()
|
||||||
|
|
||||||
|
# 2. Khởi động lại Shopee từ đầu để tránh lỗi luồng cũ
|
||||||
|
logging.info("Khởi động Shopee...")
|
||||||
|
self.d.app_start("com.shopee.vn", stop=True)
|
||||||
|
time.sleep(6) # Chờ app khởi động hoàn toàn
|
||||||
|
|
||||||
|
# Tắt popup quảng cáo nếu có (nhấn phím Back hoặc tìm nút Tắt)
|
||||||
|
# Dùng thử phím Back 1 lần nếu có popup che màn hình
|
||||||
|
self.d.press("back")
|
||||||
|
time.sleep(1)
|
||||||
|
|
||||||
|
# 3. Chuyển sang tab "Tôi"
|
||||||
|
logging.info("Vào tab Tôi...")
|
||||||
|
if self.d(text="Tôi").exists:
|
||||||
|
self.d(text="Tôi").click()
|
||||||
|
else:
|
||||||
|
return "Lỗi: Không tìm thấy tab 'Tôi'"
|
||||||
|
time.sleep(2)
|
||||||
|
|
||||||
|
# 4. Tìm và ấn "Shopee Tiếp Thị Liên Kết"
|
||||||
|
logging.info("Tìm mục Shopee Tiếp Thị Liên Kết...")
|
||||||
|
# Cuộn xuống cho đến khi thấy chữ này
|
||||||
|
self.d(scrollable=True).scroll.to(textContains="Tiếp Thị Liên Kết")
|
||||||
|
|
||||||
|
if self.d(textContains="Tiếp Thị Liên Kết").exists:
|
||||||
|
self.d(textContains="Tiếp Thị Liên Kết").click()
|
||||||
|
else:
|
||||||
|
return "Lỗi: Không tìm thấy mục Tiếp Thị Liên Kết"
|
||||||
|
|
||||||
|
time.sleep(6) # Mục này có thể tải hơi lâu vì gọi API
|
||||||
|
|
||||||
|
# 5. Ấn tab "Tài khoản" ở thanh menu dưới cùng của Affiliate
|
||||||
|
logging.info("Vào tab Tài khoản...")
|
||||||
|
if self.d(text="Tài khoản").exists:
|
||||||
|
self.d(text="Tài khoản").click()
|
||||||
|
else:
|
||||||
|
return "Lỗi: Không tìm thấy tab Tài khoản"
|
||||||
|
time.sleep(2)
|
||||||
|
|
||||||
|
# 5.1. Bấm vào "Chuyển đổi liên kết" trong danh sách
|
||||||
|
logging.info("Bấm vào mục Chuyển đổi liên kết...")
|
||||||
|
if self.d(text="Chuyển đổi liên kết").exists:
|
||||||
|
self.d(text="Chuyển đổi liên kết").click()
|
||||||
|
else:
|
||||||
|
return "Lỗi: Không tìm thấy mục Chuyển đổi liên kết"
|
||||||
|
time.sleep(2)
|
||||||
|
|
||||||
|
# 6. Nhập link vào ô Text
|
||||||
|
logging.info("Nhập link sản phẩm...")
|
||||||
|
# Nếu có nút "Xóa tất cả" link cũ thì xóa trước
|
||||||
|
if self.d(text="Xóa tất cả").exists:
|
||||||
|
self.d(text="Xóa tất cả").click()
|
||||||
|
time.sleep(0.5)
|
||||||
|
|
||||||
|
# Tìm ô nhập liệu (thường là EditText)
|
||||||
|
edit_text = self.d(className="android.widget.EditText")
|
||||||
|
if edit_text.exists:
|
||||||
|
edit_text.set_text(url)
|
||||||
|
else:
|
||||||
|
return "Lỗi: Không tìm thấy ô nhập link"
|
||||||
|
time.sleep(1)
|
||||||
|
|
||||||
|
# 7. Bấm nút Chuyển Đổi màu cam
|
||||||
|
logging.info("Bấm nút Chuyển Đổi...")
|
||||||
|
if self.d(text="Chuyển Đổi").exists:
|
||||||
|
self.d(text="Chuyển Đổi").click()
|
||||||
|
else:
|
||||||
|
return "Lỗi: Không tìm thấy nút Chuyển Đổi"
|
||||||
|
|
||||||
|
time.sleep(4) # Chờ Shopee convert link và hiện kết quả
|
||||||
|
|
||||||
|
# 8. Lấy tỷ lệ hoa hồng, link mới và giá
|
||||||
|
logging.info("Đang đọc kết quả trên màn hình...")
|
||||||
|
|
||||||
|
import json
|
||||||
|
import re
|
||||||
|
|
||||||
|
result_data = {
|
||||||
|
"status": "success",
|
||||||
|
"commission": "",
|
||||||
|
"affiliate_link": "",
|
||||||
|
"price": "",
|
||||||
|
"message": "Trích xuất thành công"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Quét toàn bộ text trên màn hình để tìm các thông tin
|
||||||
|
# Lấy tất cả các thành phần có text
|
||||||
|
all_texts = []
|
||||||
|
for elem in self.d(textMatches="(?s).*"):
|
||||||
|
t = elem.get_text()
|
||||||
|
if t and t not in all_texts:
|
||||||
|
all_texts.append(t)
|
||||||
|
|
||||||
|
for t in all_texts:
|
||||||
|
# 1. Tìm Tỷ lệ hoa hồng
|
||||||
|
if "Tỷ lệ hoa hồng" in t:
|
||||||
|
# Rút gọn lấy mỗi số (VD: "Tỷ lệ hoa hồng 10,5%" -> "10,5%")
|
||||||
|
match = re.search(r'Tỷ lệ hoa hồng\s*([\d,.]+%?)', t)
|
||||||
|
if match:
|
||||||
|
result_data["commission"] = match.group(1)
|
||||||
|
else:
|
||||||
|
result_data["commission"] = t.replace("Tỷ lệ hoa hồng", "").strip()
|
||||||
|
|
||||||
|
# 2. Tìm Affiliate Link (thường có s.shopee.vn)
|
||||||
|
if "s.shopee.vn" in t or "shp.ee" in t:
|
||||||
|
# Trích xuất phần URL, bỏ số thứ tự ví dụ "1. https://s.shopee.vn/..."
|
||||||
|
match = re.search(r'(https?://[^\s]+)', t)
|
||||||
|
if match:
|
||||||
|
result_data["affiliate_link"] = match.group(1)
|
||||||
|
|
||||||
|
# 3. Tìm Giá bán
|
||||||
|
# Thường có chữ "đ" ở đầu: đ192.000 hoặc đ90.000
|
||||||
|
if t.startswith("đ") or t.startswith("₫"):
|
||||||
|
result_data["price"] = t
|
||||||
|
|
||||||
|
if not result_data["commission"]:
|
||||||
|
# Nếu không tìm thấy, dump UI ra để debug
|
||||||
|
xml_dump = self.d.dump_hierarchy()
|
||||||
|
with open("error_dump.xml", "w", encoding="utf-8") as f:
|
||||||
|
f.write(xml_dump)
|
||||||
|
result_data["status"] = "error"
|
||||||
|
result_data["message"] = "Không thấy Tỷ lệ hoa hồng (Đã lưu error_dump.xml)"
|
||||||
|
|
||||||
|
# Trả về dạng Dictionary (FastAPI sẽ tự chuyển thành JSON cho n8n)
|
||||||
|
return result_data
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
return {"status": "error", "message": f"Lỗi không xác định: {str(e)}"}
|
||||||
|
|
||||||
|
finally:
|
||||||
|
# Luôn thoát ra màn hình chính (Homescreen) sau khi lấy xong (hoặc lỗi)
|
||||||
|
logging.info("Thoát ra màn hình chính (Homescreen)...")
|
||||||
|
self.d.press("home")
|
||||||
@@ -0,0 +1,67 @@
|
|||||||
|
# Hướng dẫn đưa API lên Armbian (Sử dụng Wireless ADB)
|
||||||
|
|
||||||
|
Vì bạn sử dụng Wireless ADB, **server Armbian và điện thoại phải kết nối cùng chung một mạng nội bộ** (cùng kết nối vào một bộ định tuyến/WiFi).
|
||||||
|
|
||||||
|
### Bước 1: Cài đặt công cụ trên Armbian
|
||||||
|
Mở Terminal (hoặc SSH) vào Armbian và chạy lệnh:
|
||||||
|
```bash
|
||||||
|
sudo apt update
|
||||||
|
# Cài đặt Python 3, pip và công cụ nền tảng ADB
|
||||||
|
sudo apt install python3 python3-pip adb -y
|
||||||
|
```
|
||||||
|
|
||||||
|
### Bước 2: Bật và Kết nối ADB không dây
|
||||||
|
1. Trên điện thoại: Bật "Gỡ lỗi không dây" (Wireless Debugging) trong mục Tùy chọn nhà phát triển. Ghi lại IP và Port (ví dụ `192.168.1.55:5555`).
|
||||||
|
2. Trên Armbian, kiểm tra kết nối mạng:
|
||||||
|
```bash
|
||||||
|
ping -c 3 192.168.1.55
|
||||||
|
```
|
||||||
|
3. Kết nối ADB từ Armbian tới điện thoại:
|
||||||
|
```bash
|
||||||
|
adb connect 192.168.1.55:5555
|
||||||
|
```
|
||||||
|
*(Bạn có thể phải nhìn vào màn hình điện thoại để bấm "Cho phép" cho lần kết nối đầu tiên).*
|
||||||
|
|
||||||
|
### Bước 3: Triển khai Code
|
||||||
|
Copy toàn bộ thư mục `botAffilate` từ Windows sang Armbian (có thể dùng FileZilla, WinSCP). Di chuyển vào thư mục đó:
|
||||||
|
```bash
|
||||||
|
cd /path/to/botAffilate
|
||||||
|
pip3 install -r requirements.txt
|
||||||
|
```
|
||||||
|
*Lưu ý: Đừng quên cập nhật biến `DEVICE_IP` trong file `main.py` thành IP chính xác của điện thoại.*
|
||||||
|
|
||||||
|
### Bước 4: Chạy API ngầm bằng Systemd
|
||||||
|
Để API luôn chạy kể cả khi khởi động lại server Armbian, tạo một file cấu hình service:
|
||||||
|
```bash
|
||||||
|
sudo nano /etc/systemd/system/bot_shopee.service
|
||||||
|
```
|
||||||
|
|
||||||
|
Dán nội dung sau vào (Nhớ sửa lại `WorkingDirectory` bằng đường dẫn thực tế):
|
||||||
|
```ini
|
||||||
|
[Unit]
|
||||||
|
Description=Shopee Affiliate API cho n8n
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
User=root
|
||||||
|
# Thay đổi đường dẫn tới thư mục code của bạn
|
||||||
|
WorkingDirectory=/root/botAffilate
|
||||||
|
ExecStart=/usr/local/bin/uvicorn main:app --host 0.0.0.0 --port 8000
|
||||||
|
Restart=always
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
```
|
||||||
|
|
||||||
|
Kích hoạt và khởi động service:
|
||||||
|
```bash
|
||||||
|
sudo systemctl daemon-reload
|
||||||
|
sudo systemctl enable bot_shopee
|
||||||
|
sudo systemctl start bot_shopee
|
||||||
|
```
|
||||||
|
Để xem log xem có lỗi không, bạn dùng lệnh: `sudo journalctl -u bot_shopee -f`
|
||||||
|
|
||||||
|
Bây giờ từ n8n, bạn chỉ cần tạo Webhook/HTTP Request bắn tới địa chỉ `http://<IP_Armbian>:8000/get_commission` là xong!
|
||||||
|
|
||||||
|
Kích hoạt môi trường ảosource venv/bin/activate
|
||||||
|
source venv/bin/activate
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
DEVICE_IP="10.160.138.2:5555"
|
||||||
|
|
||||||
|
# Dọn dẹp tiến trình cũ nếu có
|
||||||
|
pkill -f scrcpy
|
||||||
|
|
||||||
|
echo "Đang tắt màn hình và khóa cảm ứng trên thiết bị $DEVICE_IP..."
|
||||||
|
# Chạy scrcpy ẩn dưới nền (nohup)
|
||||||
|
nohup scrcpy -s $DEVICE_IP --turn-screen-off --no-window > /dev/null 2>&1 &
|
||||||
|
echo "✅ Thành công! Màn hình đã tối đen, Bot vẫn hoạt động ẩn."
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
echo "Đang khôi phục màn hình sáng và cảm ứng..."
|
||||||
|
|
||||||
|
# Chỉ cần Kill tiến trình scrcpy, màn hình sẽ tự động sáng lại
|
||||||
|
pkill -f scrcpy
|
||||||
|
|
||||||
|
echo "✅ Thành công! Điện thoại đã sáng đèn và có thể chạm lại bình thường."
|
||||||
@@ -0,0 +1,199 @@
|
|||||||
|
<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
|
||||||
|
<hierarchy rotation="0">
|
||||||
|
<node index="0" text="" resource-id="" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[0,2270][1080,2400]" drawing-order="0" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/rot0" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[0,2270][1080,2400]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/deadzone" class="android.view.View" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[0,2270][1080,2400]" drawing-order="3" hint="" />
|
||||||
|
<node index="1" text="" resource-id="com.android.systemui:id/nav_buttons" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[0,2270][1080,2400]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/start_padding" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[0,2270][233,2400]" drawing-order="1" hint="" />
|
||||||
|
<node index="1" text="" resource-id="com.android.systemui:id/recent_apps" class="android.widget.ImageView" package="com.android.systemui" content-desc="Tổng quan" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[233,2270][398,2400]" drawing-order="2" hint="" />
|
||||||
|
<node index="2" text="" resource-id="com.android.systemui:id/home" class="android.widget.ImageView" package="com.android.systemui" content-desc="Trang chính" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[457,2270][622,2400]" drawing-order="4" hint="" />
|
||||||
|
<node index="3" text="" resource-id="com.android.systemui:id/back" class="android.widget.ImageView" package="com.android.systemui" content-desc="Quay lại" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[681,2270][846,2400]" drawing-order="6" hint="" />
|
||||||
|
<node index="4" text="" resource-id="com.android.systemui:id/side_padding" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[846,2270][1080,2400]" drawing-order="7" hint="" />
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node index="0" text="" resource-id="" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[0,0][1080,102]" drawing-order="0" hint="">
|
||||||
|
<node index="1" text="" resource-id="com.android.systemui:id/scrim_behind" class="android.view.View" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[0,0][1080,102]" drawing-order="2" hint="" />
|
||||||
|
<node index="2" text="" resource-id="com.android.systemui:id/scrim_in_front" class="android.view.View" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[0,0][1080,102]" drawing-order="9" hint="" />
|
||||||
|
<node index="3" text="" resource-id="" class="android.view.View" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[0,0][1080,102]" drawing-order="11" hint="" />
|
||||||
|
<node index="4" text="" resource-id="com.android.systemui:id/status_bar_container" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[0,0][1080,102]" drawing-order="4" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/status_bar" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[0,0][1080,102]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/phone_status_bar_contents_container" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[19,0][1061,102]" drawing-order="3" hint="">
|
||||||
|
<node index="0" text="" resource-id="" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[42,27][540,102]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/clock_container" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[42,27][504,102]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/leftside" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[42,27][504,102]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="13:49" resource-id="com.android.systemui:id/clock" class="android.widget.TextView" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[42,27][148,102]" drawing-order="10" hint="" />
|
||||||
|
<node index="2" text="" resource-id="com.android.systemui:id/drip_leftear_super_container" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[148,27][504,102]" drawing-order="11" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/notch_leftear_icons" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[148,27][195,102]" drawing-order="3" hint="">
|
||||||
|
<node index="0" text="" resource-id="" class="android.widget.ImageView" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[148,31][195,97]" drawing-order="1" hint="" />
|
||||||
|
</node>
|
||||||
|
<node index="1" text="" resource-id="com.android.systemui:id/notification_icon_area" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="4" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/notification_icon_area_inner" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/notificationIcons" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="1" hint="" />
|
||||||
|
</node>
|
||||||
|
<node index="1" text="" resource-id="com.android.systemui:id/notification_icon_area_inner" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="2" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/notificationIcons" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="1" hint="" />
|
||||||
|
</node>
|
||||||
|
<node index="2" text="" resource-id="com.android.systemui:id/notification_icon_area_inner" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="3" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/notificationIcons" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="1" hint="" />
|
||||||
|
</node>
|
||||||
|
<node index="3" text="" resource-id="com.android.systemui:id/notification_icon_area_inner" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="4" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/notificationIcons" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="1" hint="" />
|
||||||
|
</node>
|
||||||
|
<node index="4" text="" resource-id="com.android.systemui:id/notification_icon_area_inner" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="5" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/notificationIcons" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="1" hint="" />
|
||||||
|
</node>
|
||||||
|
<node index="5" text="" resource-id="com.android.systemui:id/notification_icon_area_inner" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="6" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/notificationIcons" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="1" hint="" />
|
||||||
|
</node>
|
||||||
|
<node index="6" text="" resource-id="com.android.systemui:id/notification_icon_area_inner" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="7" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/notificationIcons" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="1" hint="" />
|
||||||
|
</node>
|
||||||
|
<node index="7" text="" resource-id="com.android.systemui:id/notification_icon_area_inner" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="8" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/notificationIcons" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="1" hint="" />
|
||||||
|
</node>
|
||||||
|
<node index="8" text="" resource-id="com.android.systemui:id/notification_icon_area_inner" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="9" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/notificationIcons" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="1" hint="" />
|
||||||
|
</node>
|
||||||
|
<node index="9" text="" resource-id="com.android.systemui:id/notification_icon_area_inner" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="10" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/notificationIcons" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="1" hint="" />
|
||||||
|
</node>
|
||||||
|
<node index="10" text="" resource-id="com.android.systemui:id/notification_icon_area_inner" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="11" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/notificationIcons" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="1" hint="" />
|
||||||
|
</node>
|
||||||
|
<node index="11" text="" resource-id="com.android.systemui:id/notification_icon_area_inner" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="12" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/notificationIcons" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="1" hint="" />
|
||||||
|
</node>
|
||||||
|
<node index="12" text="" resource-id="com.android.systemui:id/notification_icon_area_inner" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="13" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/notificationIcons" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="1" hint="" />
|
||||||
|
</node>
|
||||||
|
<node index="13" text="" resource-id="com.android.systemui:id/notification_icon_area_inner" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="14" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/notificationIcons" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="1" hint="" />
|
||||||
|
</node>
|
||||||
|
<node index="14" text="" resource-id="com.android.systemui:id/notification_icon_area_inner" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="15" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/notificationIcons" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="1" hint="" />
|
||||||
|
</node>
|
||||||
|
<node index="15" text="" resource-id="com.android.systemui:id/notification_icon_area_inner" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="16" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/notificationIcons" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="1" hint="" />
|
||||||
|
</node>
|
||||||
|
<node index="16" text="" resource-id="com.android.systemui:id/notification_icon_area_inner" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="17" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/notificationIcons" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="1" hint="" />
|
||||||
|
</node>
|
||||||
|
<node index="17" text="" resource-id="com.android.systemui:id/notification_icon_area_inner" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="18" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/notificationIcons" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="1" hint="" />
|
||||||
|
</node>
|
||||||
|
<node index="18" text="" resource-id="com.android.systemui:id/notification_icon_area_inner" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="19" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/notificationIcons" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="1" hint="" />
|
||||||
|
</node>
|
||||||
|
<node index="19" text="" resource-id="com.android.systemui:id/notification_icon_area_inner" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="20" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/notificationIcons" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="1" hint="" />
|
||||||
|
</node>
|
||||||
|
<node index="20" text="" resource-id="com.android.systemui:id/notification_icon_area_inner" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="21" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/notificationIcons" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="1" hint="" />
|
||||||
|
</node>
|
||||||
|
<node index="21" text="" resource-id="com.android.systemui:id/notification_icon_area_inner" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="22" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/notificationIcons" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="1" hint="" />
|
||||||
|
</node>
|
||||||
|
<node index="22" text="" resource-id="com.android.systemui:id/notification_icon_area_inner" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="23" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/notificationIcons" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="" class="android.widget.ImageView" package="com.android.systemui" content-desc="Thông báo Khung dịch vụ Xiaomi: QUAN TRỌNG: Chúng tôi đã điều chỉnh phạm vi điều khoản và điều kiện" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[415,46][465,82]" drawing-order="24" hint="" />
|
||||||
|
<node index="1" text="" resource-id="" class="android.widget.ImageView" package="com.android.systemui" content-desc="Thông báo App vault: " checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[415,46][465,82]" drawing-order="14" hint="" />
|
||||||
|
<node index="2" text="" resource-id="" class="android.widget.ImageView" package="com.android.systemui" content-desc="Thông báo Zalo: Lời mời kết bạn" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[415,46][465,82]" drawing-order="22" hint="" />
|
||||||
|
<node index="3" text="" resource-id="" class="android.widget.ImageView" package="com.android.systemui" content-desc="Thông báo Gmail: 7 thư mới" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[415,46][465,82]" drawing-order="23" hint="" />
|
||||||
|
<node index="4" text="" resource-id="" class="android.widget.ImageView" package="com.android.systemui" content-desc="Thông báo Tin nhắn: " checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[415,46][465,82]" drawing-order="19" hint="" />
|
||||||
|
<node index="5" text="" resource-id="" class="android.widget.ImageView" package="com.android.systemui" content-desc="Thông báo Bảo mật: Bảo vệ ứng dụng bằng Khóa ứng dụng" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[415,46][465,82]" drawing-order="21" hint="" />
|
||||||
|
<node index="6" text="" resource-id="" class="android.widget.ImageView" package="com.android.systemui" content-desc="Thông báo Zalo: Mây rải rác" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[415,46][465,82]" drawing-order="20" hint="" />
|
||||||
|
<node index="7" text="" resource-id="" class="android.widget.ImageView" package="com.android.systemui" content-desc="Thông báo Google: TechRadar" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[415,46][465,82]" drawing-order="18" hint="" />
|
||||||
|
<node index="8" text="" resource-id="" class="android.widget.ImageView" package="com.android.systemui" content-desc="Thông báo msa: Sắp đến rồi" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[415,46][465,82]" drawing-order="17" hint="" />
|
||||||
|
<node index="9" text="" resource-id="" class="android.widget.ImageView" package="com.android.systemui" content-desc="Thông báo Bảo mật: Thử Khóa ứng dụng" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[415,46][465,82]" drawing-order="16" hint="" />
|
||||||
|
<node index="10" text="" resource-id="" class="android.widget.ImageView" package="com.android.systemui" content-desc="Thông báo msa: Đang đến gần bạn!" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[415,46][465,82]" drawing-order="15" hint="" />
|
||||||
|
<node index="11" text="" resource-id="" class="android.widget.ImageView" package="com.android.systemui" content-desc="Thông báo Facebook: Chào mừng bạn đến với Review Đà Nẵng - Chia sẻ kinh nghiệm du lịch Đà Nẵng Hội An" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[415,46][465,82]" drawing-order="13" hint="" />
|
||||||
|
<node index="12" text="" resource-id="" class="android.widget.ImageView" package="com.android.systemui" content-desc="Thông báo Facebook: Chào mừng bạn đến với Review Đà Lạt Tất Tần Tật ❤️" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[415,46][465,82]" drawing-order="12" hint="" />
|
||||||
|
<node index="13" text="" resource-id="" class="android.widget.ImageView" package="com.android.systemui" content-desc="Thông báo Facebook: Chào mừng bạn đến với Ăn & Uống Mỹ An - Tháp Mười - Đồng Tháp" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[415,46][465,82]" drawing-order="11" hint="" />
|
||||||
|
<node index="14" text="" resource-id="" class="android.widget.ImageView" package="com.android.systemui" content-desc="Thông báo Facebook: Chào mừng bạn đến với Ăn Vặt Lai Vung Đồng Tháp" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[415,46][465,82]" drawing-order="10" hint="" />
|
||||||
|
<node index="15" text="" resource-id="" class="android.widget.ImageView" package="com.android.systemui" content-desc="Thông báo Facebook: Chào mừng bạn đến với ✅ KÊNH REVIEW DU LỊCH VŨNG TÀU ( 500k Followers )" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[415,46][465,82]" drawing-order="9" hint="" />
|
||||||
|
<node index="16" text="" resource-id="" class="android.widget.ImageView" package="com.android.systemui" content-desc="Thông báo Facebook: Chào mừng bạn đến với Review Đà Nẵng - Hội An Tất Tầt Tật" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[415,46][465,82]" drawing-order="8" hint="" />
|
||||||
|
<node index="17" text="" resource-id="" class="android.widget.ImageView" package="com.android.systemui" content-desc="Thông báo Facebook: Chào mừng bạn đến với Đồ Ăn Vặt Phú Hựu (Châu Thành - Đồng Tháp)" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[415,46][465,82]" drawing-order="7" hint="" />
|
||||||
|
<node index="18" text="" resource-id="" class="android.widget.ImageView" package="com.android.systemui" content-desc="Thông báo Facebook: Chào mừng bạn đến với Chợ Ăn Vặt Đại Lãnh. Quản trị viên đã phê duyệt yêu cầu tham gia của bạn." checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[373,46][423,82]" drawing-order="6" hint="" />
|
||||||
|
<node index="19" text="" resource-id="" class="android.widget.ImageView" package="com.android.systemui" content-desc="Thông báo Shopee: " checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,46][245,82]" drawing-order="1" hint="" />
|
||||||
|
<node index="20" text="" resource-id="" class="android.widget.ImageView" package="com.android.systemui" content-desc="Thông báo Facebook: Chào mừng bạn đến với CHỢ CẦN THƠ" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[359,46][409,82]" drawing-order="5" hint="" />
|
||||||
|
<node index="21" text="" resource-id="" class="android.widget.ImageView" package="com.android.systemui" content-desc="Thông báo Facebook: Chào mừng bạn đến với Chợ Tốt Cần Thơ ✅" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[345,46][395,82]" drawing-order="4" hint="" />
|
||||||
|
<node index="22" text="" resource-id="" class="android.widget.ImageView" package="com.android.systemui" content-desc="Thông báo Facebook: Chào mừng bạn đến với CHỢ CẦN THƠ" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[295,46][345,82]" drawing-order="3" hint="" />
|
||||||
|
<node index="23" text="" resource-id="" class="android.widget.ImageView" package="com.android.systemui" content-desc="Thông báo Facebook: Chào mừng bạn đến với Chợ Đầu Mối Tân An Cần Thơ 24h" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[245,46][295,82]" drawing-order="2" hint="" />
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node index="1" text="" resource-id="com.android.systemui:id/system_icon_area" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[540,27][1043,102]" drawing-order="2" hint="">
|
||||||
|
<node index="0" text="" resource-id="" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[784,27][1043,102]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/system_icons" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[784,34][1043,94]" drawing-order="3" hint="">
|
||||||
|
<node index="1" text="" resource-id="com.android.systemui:id/signal_cluster_view" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[784,36][959,92]" drawing-order="5" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/signal_cluster" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[784,36][959,92]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/vpn" class="android.widget.ImageView" package="com.android.systemui" content-desc="VPN bật." checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[784,36][847,92]" drawing-order="1" hint="" />
|
||||||
|
<node index="1" text="" resource-id="com.android.systemui:id/mobile_signal_group_1" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[847,36][901,92]" drawing-order="6" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/mobile_combo" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="4G Tín hiệu điện thoại đầy." checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[847,36][901,92]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[847,36][901,92]" drawing-order="6" hint="">
|
||||||
|
<node index="0" text="" resource-id="" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[847,36][901,92]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/mobile_signal" class="android.widget.ImageView" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[847,36][901,92]" drawing-order="4" hint="" />
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node index="3" text="" resource-id="com.android.systemui:id/wifi_combo" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="Tín hiệu Wi-Fi đầy." checkable="false" checked="false" clickable="false" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[901,36][959,92]" drawing-order="14" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/wifi_signal" class="android.widget.ImageView" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[901,36][959,92]" drawing-order="1" hint="" />
|
||||||
|
<node index="1" text="" resource-id="com.android.systemui:id/wifi_inout" class="android.widget.ImageView" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[933,36][959,92]" drawing-order="3" hint="" />
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node index="2" text="" resource-id="com.android.systemui:id/battery" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[959,34][1043,94]" drawing-order="6" hint="">
|
||||||
|
<node index="0" text="" resource-id="" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[959,36][1043,92]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/battery_image" class="android.widget.ImageView" package="com.android.systemui" content-desc="Pin 62 phần trăm." checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[959,36][1043,92]" drawing-order="1" hint="" />
|
||||||
|
<node index="1" text="62" resource-id="com.android.systemui:id/battery_digit" class="android.widget.TextView" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[985,36][1011,92]" drawing-order="3" hint="" />
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node index="0" text="" resource-id="" class="android.widget.FrameLayout" package="com.facebook.katana" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[0,0][1080,2400]" drawing-order="0" hint="">
|
||||||
|
<node index="0" text="" resource-id="" class="android.widget.LinearLayout" package="com.facebook.katana" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[0,0][1080,2270]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="android:id/content" class="android.widget.FrameLayout" package="com.facebook.katana" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[0,102][1080,2270]" drawing-order="2" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.facebook.katana:id/(name removed)" class="android.widget.FrameLayout" package="com.facebook.katana" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[0,102][1080,2270]" drawing-order="7" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.facebook.katana:id/(name removed)" class="android.widget.FrameLayout" package="com.facebook.katana" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[0,102][1080,2270]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.facebook.katana:id/(name removed)" class="android.view.ViewGroup" package="com.facebook.katana" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[0,223][1080,2270]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.facebook.katana:id/(name removed)" class="android.widget.FrameLayout" package="com.facebook.katana" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[0,223][1080,2270]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.facebook.katana:id/(name removed)" class="android.view.ViewGroup" package="com.facebook.katana" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[0,223][1080,2270]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="" class="android.view.ViewGroup" package="com.facebook.katana" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[66,1262][1014,1441]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="Nội dung này không hiển thị" resource-id="" class="android.view.ViewGroup" package="com.facebook.katana" content-desc="Nội dung này không hiển thị" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[66,1262][1014,1315]" drawing-order="1" hint="" />
|
||||||
|
<node index="1" text="Nội dung này chỉ hiển thị với một số người nhất định hoặc có thể đã bị gỡ." resource-id="" class="android.view.ViewGroup" package="com.facebook.katana" content-desc="Nội dung này chỉ hiển thị với một số người nhất định hoặc có thể đã bị gỡ." checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[66,1325][1014,1441]" drawing-order="2" hint="" />
|
||||||
|
</node>
|
||||||
|
<node index="1" text="" resource-id="" class="android.widget.Button" package="com.facebook.katana" content-desc="Làm mới" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[416,1485][665,1595]" drawing-order="2" hint="">
|
||||||
|
<node index="0" text="Làm mới" resource-id="" class="android.view.ViewGroup" package="com.facebook.katana" content-desc="Làm mới" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[449,1513][632,1568]" drawing-order="1" hint="" />
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node index="1" text="" resource-id="com.facebook.katana:id/(name removed)" class="android.widget.LinearLayout" package="com.facebook.katana" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[0,102][1080,223]" drawing-order="2" hint="">
|
||||||
|
<node index="0" text="" resource-id="" class="android.widget.FrameLayout" package="com.facebook.katana" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[0,102][1080,223]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="" class="android.widget.LinearLayout" package="com.facebook.katana" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[0,102][1080,223]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.facebook.katana:id/(name removed)" class="android.widget.ImageView" package="com.facebook.katana" content-desc="Quay lại" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[0,102][132,223]" drawing-order="1" hint="" />
|
||||||
|
<node index="1" text="" resource-id="com.facebook.katana:id/(name removed)" class="android.widget.FrameLayout" package="com.facebook.katana" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[132,102][937,223]" drawing-order="3" hint="" />
|
||||||
|
<node index="2" text="" resource-id="com.facebook.katana:id/(name removed)" class="android.widget.LinearLayout" package="com.facebook.katana" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[937,102][1080,223]" drawing-order="4" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.facebook.katana:id/(name removed)" class="android.widget.ImageView" package="com.facebook.katana" content-desc="Tìm kiếm" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="true" password="false" selected="false" visible-to-user="true" bounds="[937,102][1080,223]" drawing-order="1" hint="" />
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node index="1" text="" resource-id="com.facebook.katana:id/(name removed)" class="android.view.View" package="com.facebook.katana" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[0,221][1080,223]" drawing-order="2" hint="" />
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</hierarchy>
|
||||||
@@ -0,0 +1,164 @@
|
|||||||
|
<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
|
||||||
|
<hierarchy rotation="0">
|
||||||
|
<node index="0" text="" resource-id="" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[0,0][1080,102]" drawing-order="0" hint="">
|
||||||
|
<node index="1" text="" resource-id="com.android.systemui:id/scrim_behind" class="android.view.View" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[0,0][1080,102]" drawing-order="2" hint="" />
|
||||||
|
<node index="2" text="" resource-id="com.android.systemui:id/scrim_in_front" class="android.view.View" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[0,0][1080,102]" drawing-order="9" hint="" />
|
||||||
|
<node index="3" text="" resource-id="" class="android.view.View" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[0,0][1080,102]" drawing-order="11" hint="" />
|
||||||
|
<node index="4" text="" resource-id="com.android.systemui:id/status_bar_container" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[0,0][1080,102]" drawing-order="4" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/status_bar" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[0,0][1080,102]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/phone_status_bar_contents_container" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[19,0][1061,102]" drawing-order="3" hint="">
|
||||||
|
<node index="0" text="" resource-id="" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[42,27][540,102]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/clock_container" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[42,27][504,102]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/leftside" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[42,27][504,102]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="13:39" resource-id="com.android.systemui:id/clock" class="android.widget.TextView" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[42,27][148,102]" drawing-order="10" hint="" />
|
||||||
|
<node index="2" text="" resource-id="com.android.systemui:id/drip_leftear_super_container" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[148,27][504,102]" drawing-order="11" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/notch_leftear_icons" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[148,27][195,102]" drawing-order="3" hint="">
|
||||||
|
<node index="0" text="" resource-id="" class="android.widget.ImageView" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[148,31][195,97]" drawing-order="1" hint="" />
|
||||||
|
</node>
|
||||||
|
<node index="1" text="" resource-id="com.android.systemui:id/notification_icon_area" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="4" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/notification_icon_area_inner" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/notificationIcons" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="1" hint="" />
|
||||||
|
</node>
|
||||||
|
<node index="1" text="" resource-id="com.android.systemui:id/notification_icon_area_inner" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="2" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/notificationIcons" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="1" hint="" />
|
||||||
|
</node>
|
||||||
|
<node index="2" text="" resource-id="com.android.systemui:id/notification_icon_area_inner" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="3" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/notificationIcons" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="1" hint="" />
|
||||||
|
</node>
|
||||||
|
<node index="3" text="" resource-id="com.android.systemui:id/notification_icon_area_inner" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="4" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/notificationIcons" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="1" hint="" />
|
||||||
|
</node>
|
||||||
|
<node index="4" text="" resource-id="com.android.systemui:id/notification_icon_area_inner" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="5" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/notificationIcons" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="1" hint="" />
|
||||||
|
</node>
|
||||||
|
<node index="5" text="" resource-id="com.android.systemui:id/notification_icon_area_inner" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="6" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/notificationIcons" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="1" hint="" />
|
||||||
|
</node>
|
||||||
|
<node index="6" text="" resource-id="com.android.systemui:id/notification_icon_area_inner" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="7" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/notificationIcons" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="1" hint="" />
|
||||||
|
</node>
|
||||||
|
<node index="7" text="" resource-id="com.android.systemui:id/notification_icon_area_inner" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="8" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/notificationIcons" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="1" hint="" />
|
||||||
|
</node>
|
||||||
|
<node index="8" text="" resource-id="com.android.systemui:id/notification_icon_area_inner" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="9" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/notificationIcons" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="1" hint="" />
|
||||||
|
</node>
|
||||||
|
<node index="9" text="" resource-id="com.android.systemui:id/notification_icon_area_inner" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="10" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/notificationIcons" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="1" hint="" />
|
||||||
|
</node>
|
||||||
|
<node index="10" text="" resource-id="com.android.systemui:id/notification_icon_area_inner" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="11" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/notificationIcons" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="1" hint="" />
|
||||||
|
</node>
|
||||||
|
<node index="11" text="" resource-id="com.android.systemui:id/notification_icon_area_inner" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="12" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/notificationIcons" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="1" hint="" />
|
||||||
|
</node>
|
||||||
|
<node index="12" text="" resource-id="com.android.systemui:id/notification_icon_area_inner" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="13" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/notificationIcons" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="1" hint="" />
|
||||||
|
</node>
|
||||||
|
<node index="13" text="" resource-id="com.android.systemui:id/notification_icon_area_inner" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="14" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/notificationIcons" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="1" hint="" />
|
||||||
|
</node>
|
||||||
|
<node index="14" text="" resource-id="com.android.systemui:id/notification_icon_area_inner" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="15" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/notificationIcons" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="1" hint="" />
|
||||||
|
</node>
|
||||||
|
<node index="15" text="" resource-id="com.android.systemui:id/notification_icon_area_inner" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="16" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/notificationIcons" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="1" hint="" />
|
||||||
|
</node>
|
||||||
|
<node index="16" text="" resource-id="com.android.systemui:id/notification_icon_area_inner" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="17" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/notificationIcons" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="1" hint="" />
|
||||||
|
</node>
|
||||||
|
<node index="17" text="" resource-id="com.android.systemui:id/notification_icon_area_inner" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="18" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/notificationIcons" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="1" hint="" />
|
||||||
|
</node>
|
||||||
|
<node index="18" text="" resource-id="com.android.systemui:id/notification_icon_area_inner" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="19" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/notificationIcons" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="1" hint="" />
|
||||||
|
</node>
|
||||||
|
<node index="19" text="" resource-id="com.android.systemui:id/notification_icon_area_inner" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="20" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/notificationIcons" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="1" hint="" />
|
||||||
|
</node>
|
||||||
|
<node index="20" text="" resource-id="com.android.systemui:id/notification_icon_area_inner" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="21" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/notificationIcons" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="1" hint="" />
|
||||||
|
</node>
|
||||||
|
<node index="21" text="" resource-id="com.android.systemui:id/notification_icon_area_inner" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="22" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/notificationIcons" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="1" hint="" />
|
||||||
|
</node>
|
||||||
|
<node index="22" text="" resource-id="com.android.systemui:id/notification_icon_area_inner" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="23" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/notificationIcons" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,27][504,102]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="" class="android.widget.ImageView" package="com.android.systemui" content-desc="Thông báo Khung dịch vụ Xiaomi: QUAN TRỌNG: Chúng tôi đã điều chỉnh phạm vi điều khoản và điều kiện" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[415,46][465,82]" drawing-order="24" hint="" />
|
||||||
|
<node index="1" text="" resource-id="" class="android.widget.ImageView" package="com.android.systemui" content-desc="Thông báo App vault: " checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[415,46][465,82]" drawing-order="14" hint="" />
|
||||||
|
<node index="2" text="" resource-id="" class="android.widget.ImageView" package="com.android.systemui" content-desc="Thông báo Zalo: Lời mời kết bạn" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[415,46][465,82]" drawing-order="22" hint="" />
|
||||||
|
<node index="3" text="" resource-id="" class="android.widget.ImageView" package="com.android.systemui" content-desc="Thông báo Gmail: 7 thư mới" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[415,46][465,82]" drawing-order="23" hint="" />
|
||||||
|
<node index="4" text="" resource-id="" class="android.widget.ImageView" package="com.android.systemui" content-desc="Thông báo Tin nhắn: " checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[415,46][465,82]" drawing-order="19" hint="" />
|
||||||
|
<node index="5" text="" resource-id="" class="android.widget.ImageView" package="com.android.systemui" content-desc="Thông báo Bảo mật: Bảo vệ ứng dụng bằng Khóa ứng dụng" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[415,46][465,82]" drawing-order="21" hint="" />
|
||||||
|
<node index="6" text="" resource-id="" class="android.widget.ImageView" package="com.android.systemui" content-desc="Thông báo Zalo: Mây rải rác" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[415,46][465,82]" drawing-order="20" hint="" />
|
||||||
|
<node index="7" text="" resource-id="" class="android.widget.ImageView" package="com.android.systemui" content-desc="Thông báo Google: TechRadar" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[415,46][465,82]" drawing-order="18" hint="" />
|
||||||
|
<node index="8" text="" resource-id="" class="android.widget.ImageView" package="com.android.systemui" content-desc="Thông báo msa: Sắp đến rồi" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[415,46][465,82]" drawing-order="17" hint="" />
|
||||||
|
<node index="9" text="" resource-id="" class="android.widget.ImageView" package="com.android.systemui" content-desc="Thông báo Bảo mật: Thử Khóa ứng dụng" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[415,46][465,82]" drawing-order="16" hint="" />
|
||||||
|
<node index="10" text="" resource-id="" class="android.widget.ImageView" package="com.android.systemui" content-desc="Thông báo msa: Đang đến gần bạn!" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[415,46][465,82]" drawing-order="15" hint="" />
|
||||||
|
<node index="11" text="" resource-id="" class="android.widget.ImageView" package="com.android.systemui" content-desc="Thông báo Facebook: Chào mừng bạn đến với Review Đà Nẵng - Chia sẻ kinh nghiệm du lịch Đà Nẵng Hội An" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[415,46][465,82]" drawing-order="13" hint="" />
|
||||||
|
<node index="12" text="" resource-id="" class="android.widget.ImageView" package="com.android.systemui" content-desc="Thông báo Facebook: Chào mừng bạn đến với Review Đà Lạt Tất Tần Tật ❤️" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[415,46][465,82]" drawing-order="12" hint="" />
|
||||||
|
<node index="13" text="" resource-id="" class="android.widget.ImageView" package="com.android.systemui" content-desc="Thông báo Facebook: Chào mừng bạn đến với Ăn & Uống Mỹ An - Tháp Mười - Đồng Tháp" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[415,46][465,82]" drawing-order="11" hint="" />
|
||||||
|
<node index="14" text="" resource-id="" class="android.widget.ImageView" package="com.android.systemui" content-desc="Thông báo Facebook: Chào mừng bạn đến với Ăn Vặt Lai Vung Đồng Tháp" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[415,46][465,82]" drawing-order="10" hint="" />
|
||||||
|
<node index="15" text="" resource-id="" class="android.widget.ImageView" package="com.android.systemui" content-desc="Thông báo Facebook: Chào mừng bạn đến với ✅ KÊNH REVIEW DU LỊCH VŨNG TÀU ( 500k Followers )" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[415,46][465,82]" drawing-order="9" hint="" />
|
||||||
|
<node index="16" text="" resource-id="" class="android.widget.ImageView" package="com.android.systemui" content-desc="Thông báo Facebook: Chào mừng bạn đến với Review Đà Nẵng - Hội An Tất Tầt Tật" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[415,46][465,82]" drawing-order="8" hint="" />
|
||||||
|
<node index="17" text="" resource-id="" class="android.widget.ImageView" package="com.android.systemui" content-desc="Thông báo Facebook: Chào mừng bạn đến với Đồ Ăn Vặt Phú Hựu (Châu Thành - Đồng Tháp)" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[415,46][465,82]" drawing-order="7" hint="" />
|
||||||
|
<node index="18" text="" resource-id="" class="android.widget.ImageView" package="com.android.systemui" content-desc="Thông báo Facebook: Chào mừng bạn đến với Chợ Ăn Vặt Đại Lãnh. Quản trị viên đã phê duyệt yêu cầu tham gia của bạn." checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[373,46][423,82]" drawing-order="6" hint="" />
|
||||||
|
<node index="19" text="" resource-id="" class="android.widget.ImageView" package="com.android.systemui" content-desc="Thông báo Shopee: " checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[195,46][245,82]" drawing-order="1" hint="" />
|
||||||
|
<node index="20" text="" resource-id="" class="android.widget.ImageView" package="com.android.systemui" content-desc="Thông báo Facebook: Chào mừng bạn đến với CHỢ CẦN THƠ" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[359,46][409,82]" drawing-order="5" hint="" />
|
||||||
|
<node index="21" text="" resource-id="" class="android.widget.ImageView" package="com.android.systemui" content-desc="Thông báo Facebook: Chào mừng bạn đến với Chợ Tốt Cần Thơ ✅" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[345,46][395,82]" drawing-order="4" hint="" />
|
||||||
|
<node index="22" text="" resource-id="" class="android.widget.ImageView" package="com.android.systemui" content-desc="Thông báo Facebook: Chào mừng bạn đến với CHỢ CẦN THƠ" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[295,46][345,82]" drawing-order="3" hint="" />
|
||||||
|
<node index="23" text="" resource-id="" class="android.widget.ImageView" package="com.android.systemui" content-desc="Thông báo Facebook: Chào mừng bạn đến với Chợ Đầu Mối Tân An Cần Thơ 24h" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[245,46][295,82]" drawing-order="2" hint="" />
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node index="1" text="" resource-id="com.android.systemui:id/system_icon_area" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[540,27][1043,102]" drawing-order="2" hint="">
|
||||||
|
<node index="0" text="" resource-id="" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[784,27][1043,102]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/system_icons" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[784,34][1043,94]" drawing-order="3" hint="">
|
||||||
|
<node index="1" text="" resource-id="com.android.systemui:id/signal_cluster_view" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[784,36][959,92]" drawing-order="5" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/signal_cluster" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[784,36][959,92]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/vpn" class="android.widget.ImageView" package="com.android.systemui" content-desc="VPN bật." checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[784,36][847,92]" drawing-order="1" hint="" />
|
||||||
|
<node index="1" text="" resource-id="com.android.systemui:id/mobile_signal_group_1" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[847,36][901,92]" drawing-order="6" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/mobile_combo" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="4G Tín hiệu điện thoại đầy." checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[847,36][901,92]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[847,36][901,92]" drawing-order="6" hint="">
|
||||||
|
<node index="0" text="" resource-id="" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[847,36][901,92]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/mobile_signal" class="android.widget.ImageView" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[847,36][901,92]" drawing-order="4" hint="" />
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node index="3" text="" resource-id="com.android.systemui:id/wifi_combo" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="Tín hiệu Wi-Fi đầy." checkable="false" checked="false" clickable="false" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[901,36][959,92]" drawing-order="14" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/wifi_signal" class="android.widget.ImageView" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[901,36][959,92]" drawing-order="1" hint="" />
|
||||||
|
<node index="1" text="" resource-id="com.android.systemui:id/wifi_inout" class="android.widget.ImageView" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[933,36][959,92]" drawing-order="3" hint="" />
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node index="2" text="" resource-id="com.android.systemui:id/battery" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[959,34][1043,94]" drawing-order="6" hint="">
|
||||||
|
<node index="0" text="" resource-id="" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[959,36][1043,92]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/battery_image" class="android.widget.ImageView" package="com.android.systemui" content-desc="Pin 63 phần trăm." checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[959,36][1043,92]" drawing-order="1" hint="" />
|
||||||
|
<node index="1" text="63" resource-id="com.android.systemui:id/battery_digit" class="android.widget.TextView" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[985,36][1011,92]" drawing-order="3" hint="" />
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node index="0" text="" resource-id="" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[0,2270][1080,2400]" drawing-order="0" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/rot0" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[0,2270][1080,2400]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/deadzone" class="android.view.View" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[0,2270][1080,2400]" drawing-order="3" hint="" />
|
||||||
|
<node index="1" text="" resource-id="com.android.systemui:id/nav_buttons" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[0,2270][1080,2400]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/start_padding" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[0,2270][233,2400]" drawing-order="1" hint="" />
|
||||||
|
<node index="1" text="" resource-id="com.android.systemui:id/recent_apps" class="android.widget.ImageView" package="com.android.systemui" content-desc="Tổng quan" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[233,2270][398,2400]" drawing-order="2" hint="" />
|
||||||
|
<node index="2" text="" resource-id="com.android.systemui:id/home" class="android.widget.ImageView" package="com.android.systemui" content-desc="Trang chính" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[457,2270][622,2400]" drawing-order="4" hint="" />
|
||||||
|
<node index="3" text="" resource-id="com.android.systemui:id/back" class="android.widget.ImageView" package="com.android.systemui" content-desc="Quay lại" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[681,2270][846,2400]" drawing-order="6" hint="" />
|
||||||
|
<node index="4" text="" resource-id="com.android.systemui:id/side_padding" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[846,2270][1080,2400]" drawing-order="7" hint="" />
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</hierarchy>
|
||||||
@@ -0,0 +1,140 @@
|
|||||||
|
import logging
|
||||||
|
import uiautomator2 as u2
|
||||||
|
import time
|
||||||
|
import os
|
||||||
|
|
||||||
|
class FacebookBot:
|
||||||
|
def __init__(self, device_ip: str):
|
||||||
|
logging.info(f"Đang kết nối tới thiết bị {device_ip} để chạy Facebook...")
|
||||||
|
self.d = u2.connect(device_ip)
|
||||||
|
logging.info("Kết nối thành công!")
|
||||||
|
|
||||||
|
def push_image_to_gallery(self, local_image_path: str):
|
||||||
|
if not local_image_path or not os.path.exists(local_image_path):
|
||||||
|
logging.warning("Không có file ảnh cục bộ để đẩy lên điện thoại.")
|
||||||
|
return False
|
||||||
|
|
||||||
|
logging.info(f"Đang đẩy ảnh {local_image_path} vào điện thoại...")
|
||||||
|
# Đẩy ảnh vào thư mục Pictures
|
||||||
|
remote_path = "/sdcard/Pictures/n8n_fb_comment.jpg"
|
||||||
|
self.d.push(local_image_path, remote_path)
|
||||||
|
|
||||||
|
# Gọi Media Scanner để Thư viện ảnh nhận diện ngay lập tức
|
||||||
|
logging.info("Đang cập nhật thư viện ảnh...")
|
||||||
|
self.d.shell(f'am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN_FILE -d file://{remote_path}')
|
||||||
|
time.sleep(2)
|
||||||
|
return True
|
||||||
|
|
||||||
|
def post_comment(self, group_id: str, content: str, local_image_path: str = None) -> dict:
|
||||||
|
try:
|
||||||
|
self.d.screen_on()
|
||||||
|
|
||||||
|
# Đẩy ảnh vào điện thoại nếu có
|
||||||
|
has_image = False
|
||||||
|
if local_image_path:
|
||||||
|
has_image = self.push_image_to_gallery(local_image_path)
|
||||||
|
|
||||||
|
logging.info(f"Khởi động Facebook và vào Group ID: {group_id}...")
|
||||||
|
# Dùng lệnh ADB shell để mở thẳng Deep Link của Group
|
||||||
|
self.d.shell(f'am start -a android.intent.action.VIEW -d "fb://group/{group_id}"')
|
||||||
|
time.sleep(8) # Đợi load giao diện group
|
||||||
|
self.dump_ui_for_debug("fb_step1_open_group.xml")
|
||||||
|
|
||||||
|
# Quét nút Bình luận, nếu không thấy thì vuốt xuống (vì ảnh bìa group che mất)
|
||||||
|
logging.info("Tìm nút Bình luận của bài viết đầu tiên...")
|
||||||
|
comment_btn = None
|
||||||
|
|
||||||
|
for _ in range(7): # Thử vuốt tối đa 7 lần
|
||||||
|
# Thử quét bằng Regex (Không phân biệt hoa thường) ở cả description và text
|
||||||
|
c_desc_vn = self.d(descriptionMatches="(?i).*bình luận.*")
|
||||||
|
c_text_vn = self.d(textMatches="(?i).*bình luận.*")
|
||||||
|
c_desc_en = self.d(descriptionMatches="(?i).*comment.*")
|
||||||
|
c_text_en = self.d(textMatches="(?i).*comment.*")
|
||||||
|
|
||||||
|
if c_desc_vn.exists: comment_btn = c_desc_vn; break
|
||||||
|
if c_text_vn.exists: comment_btn = c_text_vn; break
|
||||||
|
if c_desc_en.exists: comment_btn = c_desc_en; break
|
||||||
|
if c_text_en.exists: comment_btn = c_text_en; break
|
||||||
|
|
||||||
|
# Vuốt lên một chút
|
||||||
|
self.d.swipe_ext("up", scale=0.5)
|
||||||
|
time.sleep(1.5)
|
||||||
|
self.dump_ui_for_debug("fb_step2_scrolling.xml")
|
||||||
|
|
||||||
|
if comment_btn and comment_btn.exists:
|
||||||
|
comment_btn[0].click() # Click vào bài đầu tiên tìm thấy
|
||||||
|
self.dump_ui_for_debug("fb_step3_clicked_comment.xml")
|
||||||
|
else:
|
||||||
|
self.dump_ui_for_debug("error_fb_no_comment_btn.xml")
|
||||||
|
return {"status": "error", "message": "Không tìm thấy nút Bình luận. Đã lưu dump UI."}
|
||||||
|
|
||||||
|
time.sleep(4)
|
||||||
|
|
||||||
|
# Gõ nội dung
|
||||||
|
logging.info("Đang nhập nội dung comment...")
|
||||||
|
edit_box = self.d(className="android.widget.EditText")
|
||||||
|
if edit_box.exists:
|
||||||
|
edit_box.set_text(content)
|
||||||
|
time.sleep(1)
|
||||||
|
else:
|
||||||
|
self.dump_ui_for_debug("error_fb_no_edittext.xml")
|
||||||
|
return {"status": "error", "message": "Không tìm thấy ô nhập chữ."}
|
||||||
|
|
||||||
|
# Chọn ảnh nếu có
|
||||||
|
if has_image:
|
||||||
|
logging.info("Đang chọn ảnh đính kèm...")
|
||||||
|
# Nút chọn ảnh thường có chữ Camera hoặc Ảnh/Video
|
||||||
|
photo_btn = self.d(descriptionContains="ảnh")
|
||||||
|
if not photo_btn.exists:
|
||||||
|
photo_btn = self.d(descriptionContains="photo")
|
||||||
|
|
||||||
|
if photo_btn.exists:
|
||||||
|
photo_btn.click()
|
||||||
|
time.sleep(3)
|
||||||
|
self.dump_ui_for_debug("fb_step5_camera_opened.xml")
|
||||||
|
|
||||||
|
# Chọn ảnh đầu tiên trong thư viện (vừa mới push vào)
|
||||||
|
# Facebook gallery thường có checkbox hoặc chỉ cần click vào vùng ảnh
|
||||||
|
gallery_images = self.d(className="android.widget.ImageView")
|
||||||
|
if gallery_images.count >= 2:
|
||||||
|
gallery_images[1].click() # Bỏ qua icon đầu tiên thường là icon camera
|
||||||
|
time.sleep(1)
|
||||||
|
self.dump_ui_for_debug("fb_step6_image_selected.xml")
|
||||||
|
|
||||||
|
# Nút Xong / Done
|
||||||
|
done_btn = self.d(textContains="Xong")
|
||||||
|
if not done_btn.exists:
|
||||||
|
done_btn = self.d(textContains="Done")
|
||||||
|
if done_btn.exists:
|
||||||
|
done_btn.click()
|
||||||
|
time.sleep(1)
|
||||||
|
else:
|
||||||
|
logging.warning("Không tìm thấy nút đính kèm ảnh, sẽ chỉ gửi text.")
|
||||||
|
|
||||||
|
# Bấm gửi
|
||||||
|
logging.info("Bấm nút Gửi (Send)...")
|
||||||
|
send_btn = self.d(descriptionContains="Gửi")
|
||||||
|
if not send_btn.exists:
|
||||||
|
send_btn = self.d(descriptionContains="Send")
|
||||||
|
|
||||||
|
if send_btn.exists:
|
||||||
|
send_btn.click()
|
||||||
|
time.sleep(3)
|
||||||
|
return {"status": "success", "message": "Đã comment thành công!"}
|
||||||
|
else:
|
||||||
|
self.dump_ui_for_debug("error_fb_no_send_btn.xml")
|
||||||
|
return {"status": "error", "message": "Không tìm thấy nút Gửi."}
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
logging.error(f"Lỗi Facebook Bot: {str(e)}")
|
||||||
|
return {"status": "error", "message": f"Lỗi không xác định: {str(e)}"}
|
||||||
|
|
||||||
|
finally:
|
||||||
|
logging.info("Thoát ra màn hình chính (Homescreen)...")
|
||||||
|
self.d.press("home")
|
||||||
|
|
||||||
|
def dump_ui_for_debug(self, filename: str):
|
||||||
|
xml_dump = self.d.dump_hierarchy()
|
||||||
|
with open(filename, "w", encoding="utf-8") as f:
|
||||||
|
f.write(xml_dump)
|
||||||
|
logging.error(f"Đã lưu giao diện lỗi vào file {filename}")
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
cat << 'EOF' > /etc/systemd/system/shopeebot.service
|
||||||
|
[Unit]
|
||||||
|
Description=Shopee Affiliate Bot API
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
User=root
|
||||||
|
WorkingDirectory=/root/botAffilate/serverPython
|
||||||
|
ExecStart=/root/botAffilate/venv/bin/python main.py
|
||||||
|
Restart=always
|
||||||
|
RestartSec=5
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
|
||||||
|
systemctl daemon-reload
|
||||||
|
systemctl restart shopeebot
|
||||||
|
systemctl status shopeebot
|
||||||
@@ -0,0 +1,109 @@
|
|||||||
|
from fastapi import FastAPI, HTTPException
|
||||||
|
from pydantic import BaseModel, Field
|
||||||
|
from automation import ShopeeBot
|
||||||
|
from typing import Optional
|
||||||
|
import logging
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import urllib.request
|
||||||
|
import uuid
|
||||||
|
import threading
|
||||||
|
from collections import defaultdict
|
||||||
|
from facebook_bot import FacebookBot
|
||||||
|
|
||||||
|
# Quản lý hàng đợi (Lock) cho từng thiết bị
|
||||||
|
device_locks = defaultdict(threading.Lock)
|
||||||
|
|
||||||
|
# Cấu hình logging: ghi log ra cả màn hình (console) và file (shopee_bot.log)
|
||||||
|
logging.basicConfig(
|
||||||
|
level=logging.INFO,
|
||||||
|
format='%(asctime)s - %(levelname)s - %(message)s',
|
||||||
|
handlers=[
|
||||||
|
logging.FileHandler("shopee_bot.log", encoding="utf-8"),
|
||||||
|
logging.StreamHandler(sys.stdout)
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
app = FastAPI(title="n8n Shopee Bridge API")
|
||||||
|
|
||||||
|
class CommissionRequest(BaseModel):
|
||||||
|
link: str
|
||||||
|
# Cho phép truyền IP linh hoạt từ n8n.
|
||||||
|
device_ip: Optional[str] = Field(default=None, description="IP:Port của điện thoại, ví dụ 192.168.1.100:5555 (WiFi) hoặc 10.8.0.5:5555 (VPN)")
|
||||||
|
|
||||||
|
from typing import Optional, Any
|
||||||
|
|
||||||
|
class FacebookCommentRequest(BaseModel):
|
||||||
|
device_ip: Optional[str] = Field(default=None, description="IP:Port của điện thoại (Cấu hình trên n8n)")
|
||||||
|
group_id: Any
|
||||||
|
content: str
|
||||||
|
image_url: Optional[str] = None
|
||||||
|
|
||||||
|
@app.post("/get_commission")
|
||||||
|
def get_commission_endpoint(req: CommissionRequest):
|
||||||
|
if not req.link:
|
||||||
|
raise HTTPException(status_code=400, detail="Thiếu link sản phẩm")
|
||||||
|
|
||||||
|
try:
|
||||||
|
# Lấy IP theo độ ưu tiên
|
||||||
|
raw_ip = req.device_ip or os.environ.get("DEVICE_IP") or ""
|
||||||
|
lock_key = raw_ip if raw_ip else "default_device"
|
||||||
|
|
||||||
|
# Dùng Lock để xếp hàng: Nếu điện thoại đang bận, request sau phải chờ
|
||||||
|
with device_locks[lock_key]:
|
||||||
|
logging.info(f"Đã khóa thiết bị {lock_key} để chạy tác vụ Shopee.")
|
||||||
|
bot = ShopeeBot(device_ip=raw_ip)
|
||||||
|
|
||||||
|
result = bot.get_commission_rate(req.link)
|
||||||
|
|
||||||
|
# Nếu đã có status thì gộp thẳng các thuộc tính của result vào JSON trả về
|
||||||
|
if isinstance(result, dict) and "status" in result:
|
||||||
|
return result
|
||||||
|
|
||||||
|
return {
|
||||||
|
"status": "success",
|
||||||
|
"commission": result
|
||||||
|
}
|
||||||
|
except Exception as e:
|
||||||
|
logging.error(f"Lỗi API: {str(e)}")
|
||||||
|
raise HTTPException(status_code=500, detail=str(e))
|
||||||
|
|
||||||
|
@app.post("/post_facebook_comment")
|
||||||
|
def post_facebook_comment(req: FacebookCommentRequest):
|
||||||
|
try:
|
||||||
|
raw_ip = req.device_ip or os.environ.get("DEVICE_IP") or ""
|
||||||
|
lock_key = raw_ip if raw_ip else "default_device"
|
||||||
|
|
||||||
|
with device_locks[lock_key]:
|
||||||
|
logging.info(f"Đã khóa thiết bị {lock_key} để chạy tác vụ Facebook.")
|
||||||
|
bot = FacebookBot(device_ip=raw_ip)
|
||||||
|
|
||||||
|
local_image_path = None
|
||||||
|
if req.image_url:
|
||||||
|
# Tải ảnh về máy chủ Python tạm thời
|
||||||
|
local_image_path = f"temp_fb_{uuid.uuid4().hex}.jpg"
|
||||||
|
urllib.request.urlretrieve(str(req.image_url), local_image_path)
|
||||||
|
logging.info(f"Đã tải ảnh tạm thời: {local_image_path}")
|
||||||
|
|
||||||
|
result = bot.post_comment(str(req.group_id), str(req.content), local_image_path)
|
||||||
|
|
||||||
|
# Dọn dẹp ảnh tạm sau khi xong
|
||||||
|
if local_image_path and os.path.exists(local_image_path):
|
||||||
|
os.remove(local_image_path)
|
||||||
|
logging.info(f"Đã xóa ảnh tạm: {local_image_path}")
|
||||||
|
|
||||||
|
if isinstance(result, dict) and "status" in result:
|
||||||
|
if result["status"] == "error":
|
||||||
|
raise HTTPException(status_code=500, detail=result.get("message"))
|
||||||
|
return result
|
||||||
|
|
||||||
|
return {"status": "success", "message": "Hoàn tất"}
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
logging.error(f"Lỗi API Facebook: {str(e)}")
|
||||||
|
raise HTTPException(status_code=500, detail=str(e))
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
import uvicorn
|
||||||
|
# Chạy server API ở cổng 8000
|
||||||
|
uvicorn.run(app, host="0.0.0.0", port=8000)
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
import xml.etree.ElementTree as ET
|
||||||
|
|
||||||
|
tree = ET.parse('ui_dump.xml')
|
||||||
|
for node in tree.iter():
|
||||||
|
if node.attrib.get('clickable') == 'true' and node.attrib.get('package') == 'com.shopee.vn':
|
||||||
|
clazz = node.attrib.get('class', '')
|
||||||
|
res_id = node.attrib.get('resource-id', '')
|
||||||
|
text = node.attrib.get('text', '')
|
||||||
|
desc = node.attrib.get('content-desc', '')
|
||||||
|
bounds = node.attrib.get('bounds', '')
|
||||||
|
print(f"{clazz} | {res_id} | text:{text} | desc:{desc} | bounds:{bounds}")
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
fastapi
|
||||||
|
uvicorn
|
||||||
|
uiautomator2
|
||||||
|
pydantic
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,20 @@
|
|||||||
|
import time
|
||||||
|
from automation import ShopeeBot
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
# Thay thế bằng IP của điện thoại trong mạng (lấy từ lệnh adb devices)
|
||||||
|
DEVICE_IP = '10.160.138.2:5555'
|
||||||
|
|
||||||
|
bot = ShopeeBot(DEVICE_IP)
|
||||||
|
|
||||||
|
test_url = "https://vn.shp.ee/tZVnqovi"
|
||||||
|
print(f"\n[BẮT ĐẦU] Lấy hoa hồng cho link: {test_url}")
|
||||||
|
|
||||||
|
# Đoạn này sẽ chạy đúng quy trình: Mở Shopee -> Tôi -> Tiếp Thị Liên Kết -> Chuyển Đổi
|
||||||
|
result = bot.get_commission_rate(test_url)
|
||||||
|
|
||||||
|
import json
|
||||||
|
print("\n===============================")
|
||||||
|
print("🎯 KẾT QUẢ TỪ BOT:")
|
||||||
|
print(json.dumps(result, indent=2, ensure_ascii=False))
|
||||||
|
print("===============================\n")
|
||||||
@@ -0,0 +1,338 @@
|
|||||||
|
<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
|
||||||
|
<hierarchy rotation="0">
|
||||||
|
<node index="0" text="" resource-id="" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[0,2270][1080,2400]" drawing-order="0" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/rot0" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[0,2270][1080,2400]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/deadzone" class="android.view.View" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[0,2270][1080,2400]" drawing-order="3" hint="" />
|
||||||
|
<node index="1" text="" resource-id="com.android.systemui:id/nav_buttons" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[0,2270][1080,2400]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/start_padding" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[0,2270][233,2400]" drawing-order="1" hint="" />
|
||||||
|
<node index="1" text="" resource-id="com.android.systemui:id/recent_apps" class="android.widget.ImageView" package="com.android.systemui" content-desc="Tổng quan" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[233,2270][398,2400]" drawing-order="2" hint="" />
|
||||||
|
<node index="2" text="" resource-id="com.android.systemui:id/home" class="android.widget.ImageView" package="com.android.systemui" content-desc="Trang chính" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[457,2270][622,2400]" drawing-order="4" hint="" />
|
||||||
|
<node index="3" text="" resource-id="com.android.systemui:id/back" class="android.widget.ImageView" package="com.android.systemui" content-desc="Quay lại" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[681,2270][846,2400]" drawing-order="6" hint="" />
|
||||||
|
<node index="4" text="" resource-id="com.android.systemui:id/side_padding" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[846,2270][1080,2400]" drawing-order="7" hint="" />
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node index="0" text="" resource-id="" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[0,0][1080,2400]" drawing-order="0" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/scrim_behind" class="android.view.View" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[0,0][1080,2400]" drawing-order="2" hint="" />
|
||||||
|
<node index="1" text="" resource-id="com.android.systemui:id/scrim_in_front" class="android.view.View" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[0,0][1080,2400]" drawing-order="9" hint="" />
|
||||||
|
<node index="2" text="" resource-id="" class="android.view.View" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[0,0][1080,2400]" drawing-order="11" hint="" />
|
||||||
|
<node index="3" text="" resource-id="com.android.systemui:id/notification_panel" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[0,0][1080,2400]" drawing-order="6" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/theme_background" class="android.view.View" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[0,0][1080,2400]" drawing-order="2" hint="" />
|
||||||
|
<node index="1" text="" resource-id="com.android.systemui:id/notification_container_parent" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[0,0][1080,2400]" drawing-order="10" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/notification_stack_scroller" class="android.widget.ScrollView" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="true" focused="false" scrollable="true" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[36,0][1044,2400]" drawing-order="5" hint="">
|
||||||
|
<node index="0" text="" resource-id="" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[36,1634][1044,1890]" drawing-order="5" hint="">
|
||||||
|
<node index="1" text="" resource-id="com.android.systemui:id/backgroundNormal" class="android.view.View" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[36,1634][1044,1890]" drawing-order="1" hint="" />
|
||||||
|
<node index="2" text="" resource-id="com.android.systemui:id/expanded" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[36,1634][1044,1890]" drawing-order="3" hint="">
|
||||||
|
<node index="0" text="" resource-id="android:id/status_bar_latest_event_content" class="android.widget.FrameLayout" package="com.miui.msa.global" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[36,1634][1044,1890]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="android:id/notification_header" class="android.view.ViewGroup" package="com.miui.msa.global" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[36,1634][1044,1754]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="android:id/icon" class="android.widget.ImageView" package="com.miui.msa.global" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[80,1668][130,1718]" drawing-order="1" hint="" />
|
||||||
|
<node index="1" text="Shopee" resource-id="android:id/app_name_text" class="android.widget.TextView" package="com.miui.msa.global" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[146,1672][247,1713]" drawing-order="2" hint="" />
|
||||||
|
<node index="2" text="•" resource-id="android:id/time_divider" class="android.widget.TextView" package="com.miui.msa.global" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[259,1672][269,1713]" drawing-order="8" hint="" />
|
||||||
|
<node index="3" text="1 phút trước" resource-id="android:id/time" class="android.widget.TextView" package="com.miui.msa.global" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[281,1672][376,1713]" drawing-order="9" hint="" />
|
||||||
|
</node>
|
||||||
|
<node index="1" text="" resource-id="" class="android.widget.LinearLayout" package="com.miui.msa.global" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[80,1722][1000,1846]" drawing-order="3" hint="">
|
||||||
|
<node index="0" text="" resource-id="android:id/notification_main_column" class="android.widget.LinearLayout" package="com.miui.msa.global" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[80,1722][1000,1846]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="android:id/line1" class="android.widget.LinearLayout" package="com.miui.msa.global" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[80,1722][1000,1781]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="Đang đến gần bạn!" resource-id="android:id/title" class="android.widget.TextView" package="com.miui.msa.global" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[80,1722][1000,1781]" drawing-order="1" hint="" />
|
||||||
|
</node>
|
||||||
|
<node index="1" text="Tận hưởng dịch vụ giao hàng tận nơi độc quyền!" resource-id="android:id/text" class="android.widget.TextView" package="com.miui.msa.global" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[80,1792][1000,1846]" drawing-order="2" hint="" />
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node index="3" text="" resource-id="com.android.systemui:id/fake_shadow" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[36,1634][1044,1890]" drawing-order="8" hint="" />
|
||||||
|
</node>
|
||||||
|
<node index="1" text="" resource-id="" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[36,1907][1044,2210]" drawing-order="6" hint="">
|
||||||
|
<node index="1" text="" resource-id="com.android.systemui:id/backgroundNormal" class="android.view.View" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[36,1907][1044,2400]" drawing-order="1" hint="" />
|
||||||
|
<node index="2" text="" resource-id="com.android.systemui:id/notification_children_container" class="android.view.ViewGroup" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[36,1907][1044,2400]" drawing-order="6" hint="">
|
||||||
|
<node index="0" text="" resource-id="android:id/notification_header" class="android.view.ViewGroup" package="com.shopee.vn" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[36,1907][1044,2053]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="android:id/icon" class="android.widget.ImageView" package="com.shopee.vn" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[80,1954][130,2004]" drawing-order="1" hint="" />
|
||||||
|
<node index="1" text="Shopee" resource-id="android:id/app_name_text" class="android.widget.TextView" package="com.shopee.vn" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[146,1958][247,1999]" drawing-order="2" hint="" />
|
||||||
|
<node index="2" text="•" resource-id="android:id/time_divider" class="android.widget.TextView" package="com.shopee.vn" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[259,1958][269,1999]" drawing-order="8" hint="" />
|
||||||
|
<node index="3" text="33 phút trước" resource-id="android:id/time" class="android.widget.TextView" package="com.shopee.vn" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[281,1958][349,1999]" drawing-order="9" hint="" />
|
||||||
|
<node index="4" text="" resource-id="android:id/expand_button" class="android.widget.Button" package="com.shopee.vn" content-desc="Mở rộng" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[308,1913][440,2045]" drawing-order="11" hint="" />
|
||||||
|
</node>
|
||||||
|
<node index="1" text="+4" resource-id="com.android.systemui:id/notification_text" class="android.widget.TextView" package="com.android.systemui" content-desc="Vẫn còn 4 thông báo." checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[905,2119][994,2171]" drawing-order="3" hint="" />
|
||||||
|
<node index="2" text="" resource-id="" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[36,1995][1044,2054]" drawing-order="10" hint="">
|
||||||
|
<node index="2" text="" resource-id="com.android.systemui:id/fake_shadow" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[36,1995][1044,2400]" drawing-order="8" hint="" />
|
||||||
|
<node index="3" text="" resource-id="com.android.systemui:id/expanded" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[36,1995][1044,2400]" drawing-order="3" hint="">
|
||||||
|
<node index="0" text="" resource-id="" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[36,1995][1044,2054]" drawing-order="4" hint="">
|
||||||
|
<node index="0" text="VOUCHER 25% ĐỘC QUYỀN Ở ĐÂY!" resource-id="com.android.systemui:id/notification_title" class="android.widget.TextView" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[80,1995][781,2054]" drawing-order="1" hint="" />
|
||||||
|
<node index="1" text="✨Tại Live Tựu Trường Hết Ý ..Thời trang giảm đến 50% ..️Freeship tận tay không tốn phí ..Vào Live săn ngay!" resource-id="com.android.systemui:id/notification_text" class="android.widget.TextView" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[781,1999][1000,2053]" drawing-order="2" hint="" />
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node index="3" text="" resource-id="" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[36,2054][1044,2113]" drawing-order="9" hint="">
|
||||||
|
<node index="2" text="" resource-id="com.android.systemui:id/fake_shadow" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[36,2054][1044,2310]" drawing-order="8" hint="" />
|
||||||
|
<node index="3" text="" resource-id="com.android.systemui:id/expanded" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[36,2054][1044,2310]" drawing-order="3" hint="">
|
||||||
|
<node index="0" text="" resource-id="" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[36,2054][1044,2113]" drawing-order="4" hint="">
|
||||||
|
<node index="0" text="Xem Bụi leather - Đồ da cao cấp live ngay nào!" resource-id="com.android.systemui:id/notification_title" class="android.widget.TextView" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[80,2054][998,2113]" drawing-order="1" hint="" />
|
||||||
|
<node index="1" text="CS_VOUCHER HỜI TRÊN LiVeSM802" resource-id="com.android.systemui:id/notification_text" class="android.widget.TextView" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[998,2058][1000,2112]" drawing-order="2" hint="" />
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node index="4" text="" resource-id="" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[36,2113][1044,2172]" drawing-order="8" hint="">
|
||||||
|
<node index="2" text="" resource-id="com.android.systemui:id/fake_shadow" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[36,2113][1044,2400]" drawing-order="8" hint="" />
|
||||||
|
<node index="3" text="" resource-id="com.android.systemui:id/expanded" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[36,2113][1044,2400]" drawing-order="3" hint="">
|
||||||
|
<node index="0" text="" resource-id="" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[36,2113][949,2172]" drawing-order="4" hint="">
|
||||||
|
<node index="0" text="NGÀY HỘI THÀNH VIÊN SẮP HẠ MÀN" resource-id="com.android.systemui:id/notification_title" class="android.widget.TextView" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[80,2113][832,2172]" drawing-order="1" hint="" />
|
||||||
|
<node index="1" text="..Loạt deal giảm đến 50% đang vơi ..Hoàn xu đến 800K vẫn sẵn sàng ..Mã giảm đến 700K, Freeship đợi bạn ..Vài tiếng sale cuối - Tận hưởng tối đa!" resource-id="com.android.systemui:id/notification_text" class="android.widget.TextView" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[832,2117][905,2171]" drawing-order="2" hint="" />
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node index="3" text="" resource-id="com.android.systemui:id/fake_shadow" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[36,1907][1044,2400]" drawing-order="8" hint="" />
|
||||||
|
</node>
|
||||||
|
<node index="2" text="" resource-id="" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[36,2227][1044,2400]" drawing-order="7" hint="">
|
||||||
|
<node index="1" text="" resource-id="com.android.systemui:id/backgroundNormal" class="android.view.View" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[36,2227][1044,2400]" drawing-order="1" hint="" />
|
||||||
|
<node index="2" text="" resource-id="com.android.systemui:id/expanded" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[36,2227][1044,2400]" drawing-order="3" hint="">
|
||||||
|
<node index="0" text="" resource-id="android:id/status_bar_latest_event_content" class="android.widget.FrameLayout" package="com.miui.msa.global" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[36,2227][1044,2400]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="android:id/notification_header" class="android.view.ViewGroup" package="com.miui.msa.global" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[36,2227][1044,2347]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="android:id/icon" class="android.widget.ImageView" package="com.miui.msa.global" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[80,2261][130,2311]" drawing-order="1" hint="" />
|
||||||
|
<node index="1" text="Shopee" resource-id="android:id/app_name_text" class="android.widget.TextView" package="com.miui.msa.global" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[146,2265][247,2306]" drawing-order="2" hint="" />
|
||||||
|
<node index="2" text="•" resource-id="android:id/time_divider" class="android.widget.TextView" package="com.miui.msa.global" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[259,2265][269,2306]" drawing-order="8" hint="" />
|
||||||
|
<node index="3" text="33 phút trước" resource-id="android:id/time" class="android.widget.TextView" package="com.miui.msa.global" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[281,2265][349,2306]" drawing-order="9" hint="" />
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node index="3" text="" resource-id="com.android.systemui:id/fake_shadow" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[36,2227][1044,2400]" drawing-order="8" hint="" />
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node index="1" text="" resource-id="com.android.systemui:id/qs_frame" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[36,0][1044,2400]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/quick_settings_container" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[36,0][1044,1634]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/qs_content" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[36,0][1044,1634]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/header" class="android.widget.RelativeLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[36,0][1044,320]" drawing-order="2" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/header_content" class="android.widget.RelativeLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[45,0][1044,294]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="9:28" resource-id="com.android.systemui:id/big_time" class="android.widget.TextView" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[45,112][266,234]" drawing-order="5" hint="" />
|
||||||
|
<node index="1" text="" resource-id="" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[947,137][1044,234]" drawing-order="6" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/notification_shade_shortcut" class="android.widget.ImageView" package="com.android.systemui" content-desc="Cài đặt" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[966,137][1044,215]" drawing-order="1" hint="" />
|
||||||
|
</node>
|
||||||
|
<node index="2" text="Th 3, 21 Thg 7" resource-id="com.android.systemui:id/date_time" class="android.widget.TextView" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[47,234][270,294]" drawing-order="1" hint="" />
|
||||||
|
<node index="3" text="" resource-id="com.android.systemui:id/system_icon_area" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[270,234][1044,294]" drawing-order="4" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/system_icons" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[717,234][1044,294]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/statusIcons" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[717,234][767,294]" drawing-order="3" hint="">
|
||||||
|
<node index="0" text="" resource-id="" class="android.widget.ImageView" package="com.android.systemui" content-desc="Chuông báo rung." checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[717,234][767,294]" drawing-order="11" hint="" />
|
||||||
|
</node>
|
||||||
|
<node index="1" text="" resource-id="com.android.systemui:id/signal_cluster_view" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[767,236][942,292]" drawing-order="5" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/signal_cluster" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[767,236][942,292]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/vpn" class="android.widget.ImageView" package="com.android.systemui" content-desc="VPN bật." checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[767,236][830,292]" drawing-order="1" hint="" />
|
||||||
|
<node index="1" text="" resource-id="com.android.systemui:id/mobile_signal_group_1" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[830,236][884,292]" drawing-order="6" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/mobile_combo" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="4G Tín hiệu điện thoại đầy." checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[830,236][884,292]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[830,236][884,292]" drawing-order="6" hint="">
|
||||||
|
<node index="0" text="" resource-id="" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[830,236][884,292]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/mobile_signal" class="android.widget.ImageView" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[830,236][884,292]" drawing-order="4" hint="" />
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node index="3" text="" resource-id="com.android.systemui:id/wifi_combo" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="Tín hiệu Wi-Fi đầy." checkable="false" checked="false" clickable="false" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[884,236][942,292]" drawing-order="14" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/wifi_signal" class="android.widget.ImageView" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[884,236][942,292]" drawing-order="1" hint="" />
|
||||||
|
<node index="1" text="" resource-id="com.android.systemui:id/wifi_inout" class="android.widget.ImageView" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[916,236][942,292]" drawing-order="3" hint="" />
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node index="2" text="" resource-id="com.android.systemui:id/battery" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[942,234][1044,294]" drawing-order="6" hint="">
|
||||||
|
<node index="0" text="" resource-id="" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[942,236][1026,292]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/battery_image" class="android.widget.ImageView" package="com.android.systemui" content-desc="Đang sạc pin, 98 phần trăm." checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[942,236][1026,292]" drawing-order="1" hint="" />
|
||||||
|
<node index="1" text="98" resource-id="com.android.systemui:id/battery_digit" class="android.widget.TextView" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[968,236][994,292]" drawing-order="3" hint="" />
|
||||||
|
</node>
|
||||||
|
<node index="1" text="" resource-id="" class="android.widget.ImageView" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[1026,234][1044,294]" drawing-order="2" hint="" />
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node index="1" text="" resource-id="com.android.systemui:id/qs_container" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[36,320][1044,1634]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/qs_background" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[36,320][1044,1400]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/quick_settings_panel" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[36,320][1044,1300]" drawing-order="2" hint="">
|
||||||
|
<node index="0" text="" resource-id="" class="androidx.viewpager.widget.ViewPager" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="true" focused="false" scrollable="true" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[36,320][1044,1172]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/tile_page" class="android.view.ViewGroup" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[36,320][1044,1172]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="Bật" resource-id="" class="android.widget.Switch" package="com.android.systemui" content-desc="" checkable="true" checked="true" clickable="true" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[48,350][294,614]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="true" password="false" selected="false" visible-to-user="true" bounds="[102,383][240,521]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="" class="android.view.ViewGroup" package="com.android.systemui" content-desc="Dữ liệu di động,Bật,Tín hiệu điện thoại đầy." checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[102,383][240,521]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="android:id/icon" class="android.widget.ImageView" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[102,383][240,521]" drawing-order="1" hint="" />
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node index="1" text="" resource-id="" class="android.widget.Button" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[48,521][294,580]" drawing-order="2" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/label_group" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[54,537][288,580]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="Dữ liệu di động" resource-id="com.android.systemui:id/tile_label" class="android.widget.TextView" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="true" focused="true" scrollable="false" long-clickable="false" password="false" selected="true" visible-to-user="true" bounds="[63,537][278,580]" drawing-order="2" hint="" />
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node index="1" text="Bật" resource-id="" class="android.widget.Switch" package="com.android.systemui" content-desc="" checkable="true" checked="true" clickable="true" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[294,350][540,614]" drawing-order="2" hint="">
|
||||||
|
<node index="0" text="" resource-id="" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="true" password="false" selected="false" visible-to-user="true" bounds="[348,383][486,521]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="" class="android.view.ViewGroup" package="com.android.systemui" content-desc="Wi-Fi,Bật,Tín hiệu Wi-Fi đầy.,Wifi-Khach" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[348,383][486,521]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="android:id/icon" class="android.widget.ImageView" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[348,383][486,521]" drawing-order="1" hint="" />
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node index="1" text="" resource-id="" class="android.widget.Button" package="com.android.systemui" content-desc="Mở cài đặt Wi-Fi." checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="true" password="false" selected="false" visible-to-user="true" bounds="[294,521][540,580]" drawing-order="2" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/label_group" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[300,537][534,580]" drawing-order="1" hint="">
|
||||||
|
<node index="1" text="Wifi-Khach" resource-id="com.android.systemui:id/tile_label" class="android.widget.TextView" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="true" focused="true" scrollable="false" long-clickable="false" password="false" selected="true" visible-to-user="true" bounds="[342,537][495,580]" drawing-order="2" hint="" />
|
||||||
|
<node index="2" text="" resource-id="com.android.systemui:id/expand_indicator" class="android.widget.ImageView" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[495,537][534,579]" drawing-order="4" hint="" />
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node index="2" text="Tắt" resource-id="" class="android.widget.Switch" package="com.android.systemui" content-desc="" checkable="true" checked="false" clickable="true" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[540,350][786,614]" drawing-order="3" hint="">
|
||||||
|
<node index="0" text="" resource-id="" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="true" password="false" selected="false" visible-to-user="true" bounds="[594,383][732,521]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="" class="android.view.ViewGroup" package="com.android.systemui" content-desc="Đèn flash,Tắt" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[594,383][732,521]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="android:id/icon" class="android.widget.ImageView" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[594,383][732,521]" drawing-order="1" hint="" />
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node index="1" text="" resource-id="" class="android.widget.Button" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[540,521][786,580]" drawing-order="2" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/label_group" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[546,537][780,580]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="Đèn flash" resource-id="com.android.systemui:id/tile_label" class="android.widget.TextView" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="true" focused="true" scrollable="false" long-clickable="false" password="false" selected="true" visible-to-user="true" bounds="[596,537][730,580]" drawing-order="2" hint="" />
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node index="3" text="Bật" resource-id="" class="android.widget.Switch" package="com.android.systemui" content-desc="" checkable="true" checked="true" clickable="true" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[786,350][1032,614]" drawing-order="4" hint="">
|
||||||
|
<node index="0" text="" resource-id="" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="true" password="false" selected="false" visible-to-user="true" bounds="[840,383][978,521]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="" class="android.view.ViewGroup" package="com.android.systemui" content-desc="Tắt tiếng,Bật" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[840,383][978,521]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="android:id/icon" class="android.widget.ImageView" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[840,383][978,521]" drawing-order="1" hint="" />
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node index="1" text="" resource-id="" class="android.widget.Button" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[786,521][1032,580]" drawing-order="2" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/label_group" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[792,537][1026,580]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="Tắt tiếng" resource-id="com.android.systemui:id/tile_label" class="android.widget.TextView" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="true" focused="true" scrollable="false" long-clickable="false" password="false" selected="true" visible-to-user="true" bounds="[847,537][970,580]" drawing-order="2" hint="" />
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node index="4" text="Tắt" resource-id="" class="android.widget.Switch" package="com.android.systemui" content-desc="" checkable="true" checked="false" clickable="true" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[48,614][294,878]" drawing-order="5" hint="">
|
||||||
|
<node index="0" text="" resource-id="" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="true" password="false" selected="false" visible-to-user="true" bounds="[102,647][240,785]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="" class="android.view.ViewGroup" package="com.android.systemui" content-desc="Chụp ảnh màn hình" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[102,647][240,785]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="android:id/icon" class="android.widget.ImageView" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[102,647][240,785]" drawing-order="1" hint="" />
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node index="1" text="" resource-id="" class="android.widget.Button" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[48,785][294,844]" drawing-order="2" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/label_group" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[54,801][288,844]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="Chụp ảnh màn hình" resource-id="com.android.systemui:id/tile_label" class="android.widget.TextView" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="true" focused="true" scrollable="false" long-clickable="false" password="false" selected="true" visible-to-user="true" bounds="[54,801][288,844]" drawing-order="2" hint="" />
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node index="5" text="Tắt" resource-id="" class="android.widget.Switch" package="com.android.systemui" content-desc="" checkable="true" checked="false" clickable="true" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[294,614][540,878]" drawing-order="6" hint="">
|
||||||
|
<node index="0" text="" resource-id="" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="true" password="false" selected="false" visible-to-user="true" bounds="[348,647][486,785]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="" class="android.view.ViewGroup" package="com.android.systemui" content-desc="Bluetooth,Tắt" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[348,647][486,785]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="android:id/icon" class="android.widget.ImageView" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[348,647][486,785]" drawing-order="1" hint="" />
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node index="1" text="" resource-id="" class="android.widget.Button" package="com.android.systemui" content-desc="Mở cài đặt Bluetooth." checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="true" password="false" selected="false" visible-to-user="true" bounds="[294,785][540,844]" drawing-order="2" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/label_group" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[300,801][534,844]" drawing-order="1" hint="">
|
||||||
|
<node index="1" text="Bluetooth" resource-id="com.android.systemui:id/tile_label" class="android.widget.TextView" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="true" focused="true" scrollable="false" long-clickable="false" password="false" selected="true" visible-to-user="true" bounds="[349,801][486,844]" drawing-order="2" hint="" />
|
||||||
|
<node index="2" text="" resource-id="com.android.systemui:id/expand_indicator" class="android.widget.ImageView" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[486,801][528,843]" drawing-order="4" hint="" />
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node index="6" text="Bật" resource-id="" class="android.widget.Switch" package="com.android.systemui" content-desc="" checkable="true" checked="true" clickable="true" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[540,614][786,878]" drawing-order="7" hint="">
|
||||||
|
<node index="0" text="" resource-id="" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="true" password="false" selected="false" visible-to-user="true" bounds="[594,647][732,785]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="" class="android.view.ViewGroup" package="com.android.systemui" content-desc="Độ sáng tự động,Bật" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[594,647][732,785]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="android:id/icon" class="android.widget.ImageView" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[594,647][732,785]" drawing-order="1" hint="" />
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node index="1" text="" resource-id="" class="android.widget.Button" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[540,785][786,844]" drawing-order="2" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/label_group" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[546,801][780,844]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="Độ sáng tự động" resource-id="com.android.systemui:id/tile_label" class="android.widget.TextView" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="true" focused="true" scrollable="false" long-clickable="false" password="false" selected="true" visible-to-user="true" bounds="[546,801][780,844]" drawing-order="2" hint="" />
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node index="7" text="Tắt" resource-id="" class="android.widget.Switch" package="com.android.systemui" content-desc="" checkable="true" checked="false" clickable="true" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[786,614][1032,878]" drawing-order="8" hint="">
|
||||||
|
<node index="0" text="" resource-id="" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="true" password="false" selected="false" visible-to-user="true" bounds="[840,647][978,785]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="" class="android.view.ViewGroup" package="com.android.systemui" content-desc="Chế độ máy bay,Tắt" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[840,647][978,785]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="android:id/icon" class="android.widget.ImageView" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[840,647][978,785]" drawing-order="1" hint="" />
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node index="1" text="" resource-id="" class="android.widget.Button" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[786,785][1032,844]" drawing-order="2" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/label_group" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[792,801][1026,844]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="Chế độ máy bay" resource-id="com.android.systemui:id/tile_label" class="android.widget.TextView" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="true" focused="true" scrollable="false" long-clickable="false" password="false" selected="true" visible-to-user="true" bounds="[795,801][1022,844]" drawing-order="2" hint="" />
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node index="8" text="Tắt" resource-id="" class="android.widget.Switch" package="com.android.systemui" content-desc="" checkable="true" checked="false" clickable="true" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[48,878][294,1142]" drawing-order="9" hint="">
|
||||||
|
<node index="0" text="" resource-id="" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="true" password="false" selected="false" visible-to-user="true" bounds="[102,911][240,1049]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="" class="android.view.ViewGroup" package="com.android.systemui" content-desc="Màn hình khóa" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[102,911][240,1049]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="android:id/icon" class="android.widget.ImageView" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[102,911][240,1049]" drawing-order="1" hint="" />
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node index="1" text="" resource-id="" class="android.widget.Button" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[48,1049][294,1108]" drawing-order="2" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/label_group" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[54,1065][288,1108]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="Màn hình khóa" resource-id="com.android.systemui:id/tile_label" class="android.widget.TextView" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="true" focused="true" scrollable="false" long-clickable="false" password="false" selected="true" visible-to-user="true" bounds="[66,1065][276,1108]" drawing-order="2" hint="" />
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node index="9" text="Bật" resource-id="" class="android.widget.Switch" package="com.android.systemui" content-desc="" checkable="true" checked="true" clickable="true" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[294,878][540,1142]" drawing-order="10" hint="">
|
||||||
|
<node index="0" text="" resource-id="" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="true" password="false" selected="false" visible-to-user="true" bounds="[348,911][486,1049]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="" class="android.view.ViewGroup" package="com.android.systemui" content-desc="Báo cáo vị trí bật." checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[348,911][486,1049]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="android:id/icon" class="android.widget.ImageView" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[348,911][486,1049]" drawing-order="1" hint="" />
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node index="1" text="" resource-id="" class="android.widget.Button" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[294,1049][540,1108]" drawing-order="2" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/label_group" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[300,1065][534,1108]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="Vị trí" resource-id="com.android.systemui:id/tile_label" class="android.widget.TextView" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="true" focused="true" scrollable="false" long-clickable="false" password="false" selected="true" visible-to-user="true" bounds="[384,1065][449,1108]" drawing-order="2" hint="" />
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node index="10" text="Bật" resource-id="" class="android.widget.Switch" package="com.android.systemui" content-desc="" checkable="true" checked="true" clickable="true" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[540,878][786,1142]" drawing-order="11" hint="">
|
||||||
|
<node index="0" text="" resource-id="" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="true" password="false" selected="false" visible-to-user="true" bounds="[594,911][732,1049]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="" class="android.view.ViewGroup" package="com.android.systemui" content-desc="Chế độ Chế độ chân dung,Tự động xoay màn hình" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[594,911][732,1049]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="android:id/icon" class="android.widget.ImageView" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[594,911][732,1049]" drawing-order="1" hint="" />
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node index="1" text="" resource-id="" class="android.widget.Button" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[540,1049][786,1108]" drawing-order="2" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/label_group" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[546,1065][780,1108]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="Khóa hướng màn hình" resource-id="com.android.systemui:id/tile_label" class="android.widget.TextView" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="true" focused="true" scrollable="false" long-clickable="false" password="false" selected="true" visible-to-user="true" bounds="[546,1065][780,1108]" drawing-order="2" hint="" />
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node index="11" text="Tắt" resource-id="" class="android.widget.Switch" package="com.android.systemui" content-desc="" checkable="true" checked="false" clickable="true" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[786,878][1032,1142]" drawing-order="12" hint="">
|
||||||
|
<node index="0" text="" resource-id="" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="true" password="false" selected="false" visible-to-user="true" bounds="[840,911][978,1049]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="" class="android.view.ViewGroup" package="com.android.systemui" content-desc="Máy quét" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[840,911][978,1049]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="android:id/icon" class="android.widget.ImageView" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[840,911][978,1049]" drawing-order="1" hint="" />
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node index="1" text="" resource-id="" class="android.widget.Button" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[786,1049][1032,1108]" drawing-order="2" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/label_group" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[792,1065][1026,1108]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="Máy quét" resource-id="com.android.systemui:id/tile_label" class="android.widget.TextView" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="true" focused="true" scrollable="false" long-clickable="false" password="false" selected="true" visible-to-user="true" bounds="[843,1065][974,1108]" drawing-order="2" hint="" />
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node index="1" text="" resource-id="com.android.systemui:id/page_indicator" class="android.view.ViewGroup" package="com.android.systemui" content-desc="Trang 1/3" checkable="false" checked="false" clickable="false" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[492,1172][588,1188]" drawing-order="2" hint="">
|
||||||
|
<node index="0" text="" resource-id="" class="android.widget.ImageView" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[492,1172][508,1188]" drawing-order="1" hint="" />
|
||||||
|
<node index="1" text="" resource-id="" class="android.widget.ImageView" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[532,1172][548,1188]" drawing-order="2" hint="" />
|
||||||
|
<node index="2" text="" resource-id="" class="android.widget.ImageView" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[572,1172][588,1188]" drawing-order="3" hint="" />
|
||||||
|
</node>
|
||||||
|
<node index="2" text="" resource-id="" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[88,1200][992,1300]" drawing-order="3" hint="">
|
||||||
|
<node index="0" text="" resource-id="" class="android.view.View" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[88,1200][992,1202]" drawing-order="1" hint="" />
|
||||||
|
<node index="1" text="" resource-id="" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[88,1202][992,1300]" drawing-order="2" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/footer_icon" class="android.widget.ImageView" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[88,1224][142,1278]" drawing-order="1" hint="" />
|
||||||
|
<node index="1" text="Thiết bị đã kết nối WireGuard" resource-id="com.android.systemui:id/footer_text" class="android.widget.TextView" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[154,1229][992,1272]" drawing-order="2" hint="" />
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node index="1" text="" resource-id="com.android.systemui:id/qs_footer_container" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[36,1300][1044,1400]" drawing-order="2" hint="">
|
||||||
|
<node index="0" text="" resource-id="" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[74,1300][1006,1400]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="" resource-id="" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[74,1300][1006,1400]" drawing-order="2" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/pie" class="android.widget.ImageView" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[74,1323][128,1377]" drawing-order="1" hint="" />
|
||||||
|
<node index="1" text="Hôm nay: 499,4KB Tháng này: 57,1MB" resource-id="com.android.systemui:id/data_usage" class="android.widget.TextView" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[140,1300][1006,1400]" drawing-order="2" hint="" />
|
||||||
|
</node>
|
||||||
|
<node index="1" text="" resource-id="" class="android.view.View" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[74,1300][1006,1302]" drawing-order="1" hint="" />
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node index="2" text="" resource-id="com.android.systemui:id/qs_footer_bundle" class="android.widget.LinearLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[36,1400][1044,1634]" drawing-order="3" hint="">
|
||||||
|
<node index="0" text="" resource-id="com.android.systemui:id/qs_brightness" class="android.widget.RelativeLayout" package="com.android.systemui" content-desc="Độ sáng màn hình" checkable="false" checked="false" clickable="false" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[36,1428][1044,1548]" drawing-order="1" hint="">
|
||||||
|
<node index="0" text="2755.0" resource-id="com.android.systemui:id/slider" class="android.widget.SeekBar" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[36,1428][1044,1548]" drawing-order="1" hint="" />
|
||||||
|
<node index="1" text="" resource-id="" class="android.widget.ImageView" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[66,1458][126,1518]" drawing-order="2" hint="" />
|
||||||
|
<node index="2" text="" resource-id="" class="android.widget.ImageView" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[954,1458][1014,1518]" drawing-order="3" hint="" />
|
||||||
|
</node>
|
||||||
|
<node index="1" text="" resource-id="com.android.systemui:id/qs_expand_indicator" class="android.widget.ImageView" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[486,1548][594,1634]" drawing-order="2" hint="" />
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node index="2" text="" resource-id="com.android.systemui:id/dismiss_view" class="android.view.View" package="com.android.systemui" content-desc="Xóa tất cả thông báo." checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[420,1975][660,2215]" drawing-order="6" hint="" />
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node index="5" text="" resource-id="com.android.systemui:id/status_bar_container" class="android.widget.FrameLayout" package="com.android.systemui" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" visible-to-user="true" bounds="[0,0][1080,102]" drawing-order="4" hint="" />
|
||||||
|
</node>
|
||||||
|
</hierarchy>
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
import os
|
||||||
|
|
||||||
|
file_path = r"c:\Users\NASPC\Documents\botAffilate\serverPython\automation.py"
|
||||||
|
with open(file_path, "r", encoding="utf-8") as f:
|
||||||
|
content = f.read()
|
||||||
|
|
||||||
|
content = "import logging\n" + content.replace("print(", "logging.info(")
|
||||||
|
|
||||||
|
with open(file_path, "w", encoding="utf-8") as f:
|
||||||
|
f.write(content)
|
||||||
|
|
||||||
|
print("Đã thay thế print thành logging.info trong automation.py")
|
||||||
@@ -0,0 +1,139 @@
|
|||||||
|
const { exec } = require('child_process');
|
||||||
|
const fs = require('fs');
|
||||||
|
const path = require('path');
|
||||||
|
// Lưu ý: Cần cài đặt thư viện fast-xml-parser để phân tích XML dễ dàng hơn: npm install fast-xml-parser
|
||||||
|
const { XMLParser } = require('fast-xml-parser');
|
||||||
|
|
||||||
|
// Hàm chạy lệnh shell/adb
|
||||||
|
function runCommand(cmd) {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
exec(cmd, (error, stdout, stderr) => {
|
||||||
|
if (error) {
|
||||||
|
reject(error);
|
||||||
|
} else {
|
||||||
|
resolve(stdout.trim());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 1. Chụp màn hình và lấy cấu trúc giao diện XML từ điện thoại
|
||||||
|
async function dumpScreenUI() {
|
||||||
|
try {
|
||||||
|
console.log("Đang quét màn hình điện thoại...");
|
||||||
|
// Dump giao diện hiện tại thành file XML trên điện thoại
|
||||||
|
await runCommand('adb shell uiautomator dump /sdcard/window_dump.xml');
|
||||||
|
|
||||||
|
// Tải file XML đó về thư mục trên Armbian/máy tính
|
||||||
|
const localPath = path.join(__dirname, 'window_dump.xml');
|
||||||
|
await runCommand(`adb pull /sdcard/window_dump.xml "${localPath}"`);
|
||||||
|
|
||||||
|
console.log(`Đã tải cấu trúc màn hình về: ${localPath}`);
|
||||||
|
return localPath;
|
||||||
|
} catch (error) {
|
||||||
|
console.error("Lỗi khi dump màn hình:", error.message);
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2. Đọc và phân tích file XML để tìm tọa độ của chữ/nút trên màn hình
|
||||||
|
function findElementCoordinates(xmlFilePath, targetText) {
|
||||||
|
const xmlData = fs.readFileSync(xmlFilePath, 'utf8');
|
||||||
|
const parser = new XMLParser({ ignoreAttributes: false });
|
||||||
|
const jsonObj = parser.parse(xmlData);
|
||||||
|
|
||||||
|
let foundBounds = null;
|
||||||
|
|
||||||
|
// Hàm đệ quy duyệt qua toàn bộ các node XML để tìm text trùng khớp
|
||||||
|
function traverse(node) {
|
||||||
|
if (!node) return;
|
||||||
|
|
||||||
|
// Kiểm tra node hiện tại có chứa text mục tiêu không
|
||||||
|
const textAttr = node['@_text'] || '';
|
||||||
|
const descAttr = node['@_content-desc'] || '';
|
||||||
|
|
||||||
|
if (textAttr.toLowerCase().includes(targetText.toLowerCase()) ||
|
||||||
|
descAttr.toLowerCase().includes(targetText.toLowerCase())) {
|
||||||
|
foundBounds = node['@_bounds'];
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Nếu node có các node con (node có thể là mảng hoặc object đơn lẻ)
|
||||||
|
const children = node.node;
|
||||||
|
if (children) {
|
||||||
|
if (Array.isArray(children)) {
|
||||||
|
for (let child of children) {
|
||||||
|
traverse(child);
|
||||||
|
if (foundBounds) break;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
traverse(children);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Bắt đầu duyệt từ node gốc hierarchy
|
||||||
|
if (jsonObj.hierarchy && jsonObj.hierarchy.node) {
|
||||||
|
traverse(jsonObj.hierarchy.node);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (foundBounds) {
|
||||||
|
// bounds có định dạng: "[x1,y1][x2,y2]" (Ví dụ: "[100,200][300,400]")
|
||||||
|
const matches = foundBounds.match(/\[(\d+),(\d+)\]\[(\d+),(\d+)\]/);
|
||||||
|
if (matches) {
|
||||||
|
const x1 = parseInt(matches[1]);
|
||||||
|
const y1 = parseInt(matches[2]);
|
||||||
|
const x2 = parseInt(matches[3]);
|
||||||
|
const y2 = parseInt(matches[4]);
|
||||||
|
|
||||||
|
// Tính tọa độ trung tâm của phần tử để click
|
||||||
|
const centerX = Math.floor((x1 + x2) / 2);
|
||||||
|
const centerY = Math.floor((y1 + y2) / 2);
|
||||||
|
return { x: centerX, y: centerY };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 3. Điều khiển điện thoại bằng ADB
|
||||||
|
async function clickAt(x, y) {
|
||||||
|
console.log(`Đang click vào tọa độ: X=${x}, Y=${y}`);
|
||||||
|
await runCommand(`adb shell input tap ${x} ${y}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
async function swipe(x1, y1, x2, y2, duration = 300) {
|
||||||
|
console.log(`Đang cuộn màn hình từ (${x1}, ${y1}) tới (${x2}, ${y2})`);
|
||||||
|
await runCommand(`adb shell input swipe ${x1} ${y1} ${x2} ${y2} ${duration}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
async function inputText(text) {
|
||||||
|
console.log(`Đang nhập văn bản: "${text}"`);
|
||||||
|
// Gửi text qua ADB shell (Lưu ý: ADB mặc định không hỗ trợ tiếng Việt có dấu tốt)
|
||||||
|
await runCommand(`adb shell input text "${text}"`);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 4. Kịch bản chạy mẫu (Ví dụ: Tìm nút "Mua ngay" trên Shopee và click vào)
|
||||||
|
async function startAutomation() {
|
||||||
|
try {
|
||||||
|
// Bước 1: Dump giao diện hiện tại
|
||||||
|
const xmlFile = await dumpScreenUI();
|
||||||
|
|
||||||
|
// Bước 2: Tìm tọa độ của nút có chữ "Mua ngay" hoặc "Mua Với Voucher"
|
||||||
|
const coords = findElementCoordinates(xmlFile, "Mua ngay");
|
||||||
|
|
||||||
|
if (coords) {
|
||||||
|
console.log(`Đã tìm thấy phần tử tại tọa độ:`, coords);
|
||||||
|
// Bước 3: Click vào phần tử đó
|
||||||
|
await clickAt(coords.x, coords.y);
|
||||||
|
} else {
|
||||||
|
console.log("Không tìm thấy chữ 'Mua ngay' trên màn hình hiện tại.");
|
||||||
|
// Thử cuộn màn hình xuống nếu không thấy
|
||||||
|
await swipe(500, 1500, 500, 500);
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.error("Lỗi kịch bản:", error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Chạy thử nghiệm
|
||||||
|
startAutomation();
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 337 KiB |
@@ -1,53 +0,0 @@
|
|||||||
[
|
|
||||||
{
|
|
||||||
"message": {
|
|
||||||
"type": 1,
|
|
||||||
"data": {
|
|
||||||
"actionId": "13593331124451",
|
|
||||||
"msgId": "8053568045365",
|
|
||||||
"cliMsgId": "1784291715396",
|
|
||||||
"msgType": "chat.recommended",
|
|
||||||
"uidFrom": "1934774705109471677",
|
|
||||||
"idTo": "1435552796197334408",
|
|
||||||
"dName": "Hiển Phan",
|
|
||||||
"ts": "1784291715456",
|
|
||||||
"status": 1,
|
|
||||||
"content": {
|
|
||||||
"title": "https://vn.shp.ee/rv4j1m3f?smtt=0.0.9",
|
|
||||||
"description": "Thùng Máy Fujitsu SFF Đồng Bộ Zin Tháo Máy -Chỉ Main Case Nguồn Không CPU RAM SSD - Bảo Hành 3 Tháng | 0 likes , watch @ext20vi1bj's video in Shopee Video",
|
|
||||||
"href": "https://vn.shp.ee/rv4j1m3f?smtt=0.0.9",
|
|
||||||
"thumb": "",
|
|
||||||
"childnumber": 0,
|
|
||||||
"action": "recommened.link",
|
|
||||||
"params": "{\"redirect_url\":\"\",\"src\":\"vn.shp.ee\",\"mediaTitle\":\"ext20vi1bj on Shopee Video\",\"streamUrl\":\"\",\"type\":0,\"linkType\":0,\"artist\":\"\",\"count\":\"\",\"stream_icon\":\"\",\"mediaId\":\"\",\"video_duration\":0,\"arid\":0,\"href\":\"https:\\/\\/vn.shp.ee\\/rv4j1m3f?smtt=0.0.9\",\"tType\":1,\"tWidth\":0,\"tHeight\":0,\"icon\":\"https:\\/\\/deo.shopeemobile.com\\/shopee\\/shopee-pcmall-live-sg\\/assets\\/icon_favicon_1_96.wI1aMs.png\",\"thumb_src_type\":1}",
|
|
||||||
"type": ""
|
|
||||||
},
|
|
||||||
"notify": "1",
|
|
||||||
"ttl": 0,
|
|
||||||
"userId": "0",
|
|
||||||
"uin": "0",
|
|
||||||
"topOut": "0",
|
|
||||||
"topOutTimeOut": "0",
|
|
||||||
"topOutImprTimeOut": "0",
|
|
||||||
"propertyExt": {
|
|
||||||
"color": -1,
|
|
||||||
"size": -1,
|
|
||||||
"type": -1,
|
|
||||||
"subType": 0,
|
|
||||||
"ext": "{\"sSrcType\":-1,\"sSrcStr\":\"\",\"msg_warning_type\":0,\"emoji\":{\"content\":0,\"num\":0,\"uniq\":0,\"first\":\"\",\"last\":\"\",\"most\":\"\",\"text\":1}}"
|
|
||||||
},
|
|
||||||
"paramsExt": {
|
|
||||||
"countUnread": 1,
|
|
||||||
"containType": 0,
|
|
||||||
"platformType": 0
|
|
||||||
},
|
|
||||||
"cmd": 521,
|
|
||||||
"st": 3,
|
|
||||||
"at": 0,
|
|
||||||
"realMsgId": "0"
|
|
||||||
},
|
|
||||||
"threadId": "1435552796197334408",
|
|
||||||
"isSelf": true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
Reference in New Issue
Block a user