Cơ chế để làm điều này dựa vào thay thế kịch bản phim hoạt hình pin, được điều hành trong khi thiết bị bị tắt nhưng được cắm vào, thường hiển thị biểu tượng pin sạc. Tên của tập lệnh thay đổi từ thiết bị đến thiết bị, nhưng nó thường nằm trong thư mục /system/bin
. Các thiết bị Samsung thường gọi tập lệnh playlpm
và các tên khác cho tập lệnh mà tôi đã xem bao gồm ipod
, lpm
và battery_charging
. Điều này sẽ không nhất thiết phải hoạt động trên mọi thiết bị, bởi vì điều này nằm ngoài khung công tác Android chuẩn - một số thiết bị có thể không có tập lệnh tương đương hoặc có thể triển khai theo một cách khác.
Điều này có thể được mô tả là "khai thác" ở chỗ nó đòi hỏi gốc và làm việc ở cấp Linux thay vì cấp khung công tác Android, nhưng hiện tại không có cách nào khác để thực hiện hành vi này.
Cơ chế chung để thực hiện thay đổi này được mô tả tại đây: https://android.stackexchange.com/questions/20021/automatically-power-on-android-when-the-charger-is-connected. Tất nhiên, bạn nên sao lưu tập lệnh hoạt ảnh trước của pin trước khi thực hiện bất kỳ thao tác nào trong số này.
Tập lệnh sau đã làm việc cho tôi trên nhiều thiết bị (một số thiết bị Samsung và Verizon Ellipsis 7). Về cơ bản, nó sẽ kiểm tra xem điện thoại đã được cắm vào nguồn AC và có sạc đủ không. Nếu vậy, nó khởi động. Nếu không, nó sẽ đợi N giây và thử lại. Như một tác dụng phụ, kịch bản hoạt hình pin ban đầu sẽ không chạy, và bạn sẽ không bao giờ nhìn thấy hình ảnh động đang sạc.
#!/system/bin/sh
# battery threshold before boot-up (in percent)
bthresh=10
# time to sleep between checks (in seconds)
sleeptime=600
# file that contains current battery level as integer between 0 and 100
cfi=/sys/class/power_supply/battery/capacity
# file that contains 1 if we're plugged in to AC, 0 if not
acfi=/sys/class/power_supply/battery/subsystem/ac/online
# if either file doesn't exist, just do normal sleep+boot
[ ! -f $cfi ] && sleep $sleeptime && /system/bin/reboot
[ ! -f $acfi ] && sleep $sleeptime && /system/bin/reboot
# populate capacity and AC variables
c=`cat $cfi`
ac=`cat $acfi`
# stop loop if we're not plugged into AC
until [ "$ac" -eq 0 ]
do
# if capacity above threshold, boot up
if [ "$c" -gt "$bthresh" ]; then
/system/bin/reboot
fi
# wait some time before next check
sleep $sleeptime
# update capacity and AC variables
c=`cat $cfi`
ac=`cat $acfi`
done
Không có mã người dùng hoặc thậm chí là hệ điều hành đang chạy tại thời điểm đó nên không, điều đó là không thể. –
@SamiKuhmonen - cách hoạt ảnh tính phí hiển thị, sau đó? –
Vấn đề thú vị ... Tôi có một tình huống tương tự mà tôi đang tìm cách giải quyết. Chúng tôi đang thảo luận vấn đề này tại XDA, đây là liên kết: http://forum.xda-developers.com/showthread.php?t=1187631&page=7 – portsample