- VisualStudio2022
- pprof-Hướng dẫn sử dụng nó trong bản mạng trực tiếp
- Triển khai C# các loại hộp chọn nhiều màu lựa chọn thả xuống, cây lựa chọn nhiều màu lựa chọn thả xuống và các nút tối đa
- [Ghi chú học tập] Cơ sở dữ liệu cấu trúc: cat tree
RTC là Đồng hồ thời gian thực. Các chức năng chính của nó là:
PowerOffAlarm là một ứng dụng hoặc thành phần liên quan đến chức năng cảnh báo tắt máy của hệ thống Android. Khi người dùng đặt đồng hồ báo thức tắt máy, nó sẽ gửi phát đồng hồ báo thức tắt máy đến PowerOffAlarm và chuyển các tham số thời gian báo thức. Sau khi nhận được phát sóng, PowerOffAlarm ghi thời gian vào đồng hồ thời gian thực (RTC) theo mức cài đặt trước. thời gian khởi động và thời gian báo thức và ghi thời gian vào một tập tin để lưu trữ tạm thời. Theo mặc định, thời gian được sử dụng là thời gian ở múi giờ hiện tại. Nếu dấu thời gian đến ở múi giờ khác thì cần điều chỉnh theo dấu thời gian ở múi giờ hiện tại.
Múi giờ là các khu vực được phân chia để phù hợp với sự khác biệt về thời gian ở các vùng khác nhau do chuyển động quay của trái đất gây ra.
Đồng hồ báo thức tắt máy PowerOffAlarm Đường dẫn mã nguồn: nhà cung cấp/qcom/độc quyền/PowerOffAlarm/src/com/qualcomm/qti/poweroffalarm.
Trước tiên hãy xem mã nguồn của bộ thu phát sóng liên quan đến đồng hồ báo thức tắt máy trong AndroidManifest.xml:
Để biết logic của việc đặt cảnh báo tắt máy và hủy cảnh báo tắt máy, hãy theo dõi mã nguồn của PowerOffAlarmBroadcastReceiver: \vendor\qcom\propetary\PowerOffAlarm\src\com\qualcomm\qti\poweroffalarm\PowerOffAlarmBroadcastReceiver.java.
/************************************************* ***************************** @file PowerOffAlarmBroadcastReceiver.java @brief Nhận hành động "org.codeaurora.poweroffalarm.action.SET_ALARM" tới đặt cảnh báo tắt nguồn và nhận hành động "org.codeaurora.poweroffalarm.action.CANCEL_ALARM" để hủy cảnh báo. **************************************************** */ lớp công khai PowerOffAlarmBroadcastReceiver mở rộng BroadcastReceiver { // Đặt hành động để hủy cảnh báo tắt riêng tư tĩnh cuối cùng Chuỗi ACTION_SET_POWEROFF_ALARM = "org.codeaurora.poweroffalarm.action.SET_ALARM" // Đặt hành động để hủy cảnh báo tắt riêng tư tĩnh cuối cùng Chuỗi ACTION_CANCEL_POWEROFF_ALARM = "org.codeaurora .poweroffalarm.action. CANCEL_ALARM"; //Thêm ý định đặt đồng hồ báo thức tắt máy khóa riêng tĩnh cuối cùng Chuỗi TIME = "time"; //Đặt hoặc hủy báo thức nếu (ACTION_SET_POWEROFF_ALARM.equals(action)) //Đặt hành động báo thức dài AlarmTime = Intent.getLongExtra(TIME, PowerOffAlarmUtils.DEFAULT_ALARM_TIME);// Lấy ra Dấu thời gian cần đặt dài AlarmInPref = PowerOffAlarmUtils.getAlarmFromPreference(context);//Lấy dấu thời gian đã đặt trước đóLog.d(TAG, "Đặt báo thức tắt nguồn: thời gian báo thức " + AlarmTime + " thời gian trong pref " + AlarmInPref); PowerOffAlarmUtils.saveAlarmToPreference(context, AlarmTime) ;/ /Lưu dấu thời gian mới dài báo độngTimeToRtc = PowerOffAlarmUtils.setAlarmToRtc(alarmTime);//Thời gian được chuyển đổi thành RTC if (alarmTimeToRtc != FAILURE) {//Đó là thời gian hợp pháp detectData.setAlarmTime(alarmTime); PersistData.setAlarmStatus(PowerOffAlarmUtils.ALARM_STATUS_TO_FIRE); PersData.setSnoozeTime(PowerOffAlarmUtils.DEFAULT_ALARM_TIME); PersistData.writeDataToFile();//Thời gian RTC đã đặt sẽ được lưu trữ trong tệp PowerOffAlarmUtils.saveRtcAlarmToPreference(context, AlarmTimeToRtc); (ACTION_CANCEL_POWEROFF_ALARM.equals(action)){//Hủy hành động cảnh báo dài AlarmTime = Intent.getLongExtra(TIME, PowerOffAlarmUtils.DEFAULT_ALARM_TIME);//Lấy dấu thời gian cảnh báo cần hủy dài AlarmInPref = PowerOffAlarmUtils.getAlarmFromPreference(context);// Nhận Dấu thời gian được đặt trước if (alarmTime == AlarmInPref) //Nếu nó giống với dấu thời gian đã đặt trước đó, bạn có thể hủy báo thức đã đặt PowerOffAlarmUtils.saveAlarmToPreference(context, PowerOffAlarmUtils.DEFAULT_ALARM_TIME); PowerOffAlarmUtils.saveRtcAlarmToPreference(context, PowerOffAlarmUtils.DEFAULT_ALARM_TIME); PowerOffAlarmUtils.cancelAlarmInRtc(); if (rtc < 0) { Log.d(TAG, "Hủy thời gian báo thức trong rtc không thành công "); } PersistData.setAlarmStatus(PowerOffAlarmUtils.ALARM_STATUS_NONE); PersistData.setAlarmTime(PowerOffAlarmUtils.DEFAULT_ALARM_TIME); PersistData.writeDataToFile();
Cuối cùng, mã nguồn của PowerOffAlarmUtils được truy tìm đến: \vendor\qcom\propetary\PowerOffAlarm\src\com\qualcomm\qti\poweroffalarm\PowerOffAlarmUtils.java.
/** * Đặt thời gian báo thức cho thanh ghi rtc * * @param thời gian báo thức dựa trên thời gian hiện tại (ms) * @return set result -- Thất bại, trả về THẤT BẠI; * trả về thời gian báo thức về rtc */ public static Final dài MS_IN_ONE_MIN = 60000L;//Dài cuối cùng tĩnh riêng tư một phút SEC_TO_MS = 1000L;//Chuyển đổi giây thành mili giây tĩnh dài công khai setAlarmToRtc(dài AlarmTime/*Dấu thời gian của thời gian trong tương lai*/) { long currentTime = System.currentTimeMillis();//Dấu thời gian của thời gian hiện tại dài AlarmInRtc = getAlarmFromRtc(); long rtcTime = getRtcTime(); // MS_IN_ONE_MIN được hệ thống đặt trước Thời gian bật nguồn lâu dàiDelta = thời gian báo thức - thời gian hiện tại - MS_IN_ONE_MIN;//Nhận sự khác biệt giữa dấu thời gian hiện tại và tương lai (đơn vị: ms) // báo thức trong hai phút không được hỗ trợ if (timeDelta <= 0) { Log.d(TAG, "setAlarmToRtc failed: thời gian báo thức là một phút" //Nếu thời gian cài đặt quá ngắn, sẽ báo lỗi; sẽ được trả về } dài AlarmTimeToRtc = timeDelta / SEC_TO_MS + rtcTime;//Tính thời gian RTC để đánh thức máy (đơn vị: ms) thử { IAlarm mProxy = IAlarm.getService(); int ret = mProxy.setAlarm(alarmTimeToRtc);//Đặt thời gian RTC if (ret == THÀNH CÔNG) //Đặt thành công return AlarmTimeToRtc } else { return FAILURE;//Đặt thất bại} } bắt ( Ngoại lệ e) { Log.d(TAG, e.toString()); trả về LỖI; }
Đối với mã nguồn của chương trình phát sóng tắt máy, trước tiên hãy theo dõi mã nguồn: \vendor\qcom\propetary\PowerOffAlarm\src\com\qualcomm\qti\poweroffalarm.java.
lớp công khai PowerOffAlarmDialog mở rộng Hoạt động{ lớp tĩnh công khai ShutDownReceiver mở rộng BroadcastReceiver { @Override public void onReceive(final Context context, Intent Intent) { PowerOffAlarmUtils.powerOff(context);//Shutdown} } }
Sau đó truy tìm PowerOffAlarmUtils.java:
chuỗi tĩnh cuối cùng ACTION_REQUEST_SHUTDOWN = "com.android.internal.intent.action.REQUEST_SHUTDOWN"; public static void powerOff(Context context) { //Nếu bạn muốn sử dụng trực tiếp chức năng này, ứng dụng phải là một ứng dụng hệ thống và có các quyền sau: // Ý định requestShutdown = new Intent(ACTION_REQUEST_SHUTDOWN); requestShutdown.putExtra(EXTRA_KEY_CONFIRM, false);//true là cửa sổ bật lên hỏi, sai là tắt trực tiếp mà không có cửa sổ bật lên requestShutdown.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); ); }
Đặt báo thức tắt máy.
chuỗi cuối cùng tĩnh công khai POWER_OFF_ALARM_PACKAGE = "com.qualcomm.qti.poweroffalarm"; chuỗi cuối cùng tĩnh riêng tư dài MS_IN_ONE_MIN = 6000L /** * Đặt báo thức tắt máy và bật máy tính khi đạt đến dấu thời gian định trước* * @param mContext context* @param millis Dấu thời gian trong tương lai*/ public static void startPowerOnAlarm(Context mContext, long millis) {//Khởi động Ý định ý định = Ý định mới(Constants.ACTION_SET_POWEROFF_ALARM); ý định.addFlags(Intent.FLAG_RECEIVER_FOREGROUND); ý định.setPackage(POWER_OFF_ALARM_PACKAGE); thời gian dài = millis + MS_IN_ONE_MIN; ý định.putExtra("thời gian", thời gian); mContext .sendBroadcast(ý định); }
Hủy báo động tắt máy.
public static Final String ACTION_CANCEL_POWEROFF_ALARM = "org.codeaurora.poweroffalarm.action.CANCEL_ALARM"; * Hủy cảnh báo tắt, hủy cảnh báo được đặt ở dấu thời gian millis* * @param mContext context* @param millis Dấu thời gian của cảnh báo đã bị hủy */ public static void cancelAlarm(Context mContext, long millis) { Ý định = mới Ý định(ACTION_CANCEL_POWEROFF_ALARM); ý định.addFlags(Intent.FLAG_RECEIVER_FOREGROUND); ý định.setPackage(POWER_OFF_ALARM_PACKAGE); millis += MS_IN_ONE_MIN; ý định.putExtra("thời gian", millis);
Chức năng tắt máy.
public static void startShutDown(Context mContext) //Tắt Intent Intent = new Intent("org.codeaurora.poweroffalarm.action.ALARM_POWER_OFF"); Intent.setPackage(POWER_OFF_ALARM_PACKAGE); Intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); sendBroadcast (ý định); // Nó cũng có thể được triển khai bằng mã sau, nhưng nó phải là một ứng dụng hệ thống có các quyền sau: // // String action = "com .android.internal .intent.action.REQUEST_SHUTDOWN"; // if(Build.VERSION.SDK_INT <= Build.VERSION_CODES.N){ // hành động = "android.intent.action.ACTION_REQUEST_SHUTDOWN"; // } // Ý định = ý định mới (hành động); // ý định.putExtra("android.intent.extra.KEY_CONFIRM", sai // ý định.setFlags(Ý định) .FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); ý định.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // mContext.startActivity(ý định }
Cuối cùng, bài viết này về [Android] Đồng hồ báo thức tắt ứng dụng Google Phân tích mã nguồn PowerOffAlarm và triển khai bật và tắt theo lịch trình có tại đây. Nếu bạn muốn biết thêm về [Android] Đồng hồ báo thức tắt ứng dụng Google PowerOffAlarm, phân tích và triển khai mã nguồn theo lịch trình. tắt máy Để biết thông tin về cách bật và tắt, vui lòng tìm kiếm các bài viết của CFSDN hoặc tiếp tục duyệt các bài viết liên quan. Tôi hy vọng bạn sẽ ủng hộ blog của tôi trong tương lai! .
Tôi đang làm việc thông qua labrepl và tôi thấy một số mã tuân theo mẫu này: ;; Pattern (apply #(apply f %&) coll) ;;
Tôi chưa bao giờ gửi ứng dụng lên cửa hàng ứng dụng nhưng tôi sẽ làm như vậy trong tương lai gần. Cho đến nay, tôi cảm thấy thoải mái khi thiết kế cho iPhone hơn là iPad. Tôi hiểu rằng bằng cách đặt ứng dụng TRẢ TIỀN phổ biến trên App Store, khách hàng có thể thanh toán một lần để sử dụng
Tôi có một ứng dụng xuất bản trên Facebook bằng các ứng dụng Facebook khác nhau (2 AppID khác nhau) và hiển thị ứng dụng đó là "qua iPhone"/"qua iPad". Khi ứng dụng Facebook
Tôi có một yêu cầu là chúng tôi phải chạy một trang web trong ứng dụng iOS Webview bằng cách lưu tệp nguồn trang web trong ứng dụng iOS cục bộ. Angular yêu cầu máy chủ để chạy ứng dụng, nhưng vì chúng tôi lưu tệp cục bộ nên chúng tôi không thể
Vì vậy, tôi có một ứng dụng khách một trang. Luồng thông thường: Ứng dụng -> Máy chủ OAuth2 -> Ứng dụng Chúng tôi có máy chủ OAuth2 của riêng mình để mọi người có thể đăng nhập vào ứng dụng và nhận access_t được liên kết với thực thể người dùng
Giả sử tôi đã cài đặt ứng dụng Android A trên thiết bị của người dùng, ứng dụng của tôi có AppWidget nơi chúng tôi có thể cho phép các nhà phát triển Android khác đăng quảng cáo quảng bá ứng dụng của họ trên cơ sở chi phí mỗi lần cài đặt. Vì vậy
Có một ví dụ trong Bí mật của Ninja Ninja cung cấp đoạn mã sau để vượt qua hàm Math.min() của JavaScript, hàm này yêu cầu một danh sách có độ dài thay đổi. Ví dụ:
Khi tôi truyền một mảng và một đối tượng cho hàm.apply() tương ứng, tôi nhận được o/p NaN, nhưng khi tôi truyền một đối tượng và một mảng, tôi nhận được một số. Tại sao điều này xảy ra? Vì mảng cũng được coi là đối tượng nên tại sao tôi không thể sử dụng nó
CFSDN nhấn mạnh vào nguồn mở để tạo ra giá trị và chúng tôi cam kết xây dựng một nền tảng chia sẻ tài nguyên để mọi nhân viên CNTT có thể tìm thấy thế giới tuyệt vời của bạn tại đây. Bài viết trên blog CFSDN này Ứng dụng Chuyển đổi ASP Chức năng Thời gian Greenwich DateDiff() được thu thập và biên soạn bởi CFSDN. tác giả, nếu bạn
Tôi đang chuyển một danh sách tới bản đồ và muốn trả về một đối tượng data.frame có tên đã hợp nhất. Ví dụ: thư viện(tidyverse) thư viện(broom) mtcars %>% spl
Tôi có một câu hỏi rất cơ bản nhưng tôi không biết cách triển khai nó: Tôi có một khung dữ liệu trả về trong đó các giá trị trả về của từng công cụ được sắp xếp theo hàng: tmp<-as.data.frame(t(data.frame (a=rnorm(250,0,1)
Tôi đang sử dụng ứng dụng FB của mình để tạo nhóm và mời người dùng vào nhóm ứng dụng của mình và mọi thứ đều hoạt động tốt trong lần đầu tiên. Khi tôi cố gắng tạo một nhóm khác, tôi gặp lỗi sau: {"(OAuthException - #4009) (#4009) Khi có nhiều người dùng hơn
Chúng tôi đang phát triển một ứng dụng con tương tự như ứng dụng Talking Ben. Nó chứa một số lượng lớn các chuỗi hình ảnh JPEG cho hoạt ảnh tương tác. Vấn đề là hình ảnh động chơi tốt trên iPad Air nhưng lại bị chậm hoặc lag trên iPad 2
Tôi đã theo dõi Clojure được một thời gian và một số tính năng của nó rất thú vị (cấu trúc dữ liệu liên tục, phương thức chức năng, trạng thái bất biến). Tuy nhiên, vì tôi vẫn đang học nên tôi muốn hiểu cách áp dụng nó trong các tình huống thực tế, chứng minh lợi ích của nó, sau đó phát triển và áp dụng nó cho các vấn đề phức tạp hơn. Ngay lập tức,
Tôi đã phát triển một ứng dụng chỉ bằng tiếng Na Uy. Ứng dụng không sử dụng bản địa hóa vì nó được cho là chỉ được hiển thị bằng một ngôn ngữ (tiếng Na Uy). Tuy nhiên, tôi đã đặt "Bản địa hóa vùng phát triển gốc" thành "không" trong tệp Info.plist. Tôi cũng sử dụng
Sau khi đọc câu trả lời của Anthony cho câu hỏi về trình phân tích cú pháp liên quan đến phong cách, tôi đang cố gắng thuyết phục bản thân rằng việc viết một trình phân tích cú pháp nguyên khối vẫn có thể khá nhỏ gọn. Vì vậy, thay vì tham khảo::
Có điều gì tương tự như sapply trong thư viện đa lõi không? Hay tôi phải unlist(mclapply(..)) để đạt được điều này? Nếu nó không tồn tại: lý do là gì? Cảm ơn trước và chúng tôi xin lỗi nếu đây là một câu hỏi ngu ngốc
Tôi muốn kết quả bật lên trong cửa sổ để chúng dễ nhìn và tìm thấy hơn (ví dụ: chúng không bị mất khi bảng điều khiển tiếp tục cuộn). Một cách là sử dụng sink() và file.show(). Ví dụ: y <- rnorm(100); x <- r
Tôi có Bộ điều khiển mvc mùa xuân như hiển thị bên dưới @RequestMapping(value="/new", Method=RequestMethod.POST) public Stri
Tôi đang đọc StructMap về việc tiêm phụ thuộc (tiêm), đầu tiên có hai phần để khởi tạo bản đồ, giao diện của loại lớp cụ thể và phần còn lại chỉ là khởi tạo (yêu cầu một thể hiện). Phần đầu tiên yêu cầu cấu hình và thiết lập, được thực hiện trong Bo
Tôi là một lập trình viên xuất sắc, rất xuất sắc!