android廣播屏幕
Ⅰ android代碼,怎麼監控到屏幕亮度的變化
android的屏幕亮度變化時不會發送廣播,而是通過Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE, value);設置的,其中的參數value是0-255之間的整型值,如果想獲取到當前屏幕的亮度的話,可以通過int currentValue=Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS);當然獲取到的值也是0-255之間的數,如果你想獲取到屏幕亮度的變化可以在Settings.System.putInt()方法中找到Settings.System.SCREEN_BRIGHTNESS_MODE對應的設置語句,然後發送一個廣播出去。
Ⅱ android怎麼接收手機鎖屏的廣播
一下方法或設置均游禪未驗證
==========
鎖屏或黑屏會廣播兩個消息分別睜磨判是:ACTION_SCREEN_OFF和ACTION_SCREEN_ON
程序控制手機永遠不鎖屏或者永遠亮光:通過設置View.setKeepScreenOn(boolean)的方悉改法可以永不鎖屏
===========以下方法作者聲稱沒有監聽到該廣播===========
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals( "android.intent.action.SCREEN_OFF" )){
Toast.makeText(context, "bbbb", Toast.LENGTH_LONG).show();
}
}
xml文件中如下:
<receiver android:name="ServiceReceiver">
<intent-filter>
<action android:name="android.intent.action.SCREEN_OFF" />
</intent-filter>
</receiver>
================以下禁止鎖屏方法未驗證==============
在每個Activity的onCreate裡面加上如下代碼就可以了:
@Override
protected void onCreate(Bundle icicle){
super.onCreate(icicle);
getWindow();addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
轉載:http://mycoding.iteye.com/blog/962625
Ⅲ Android BroadcastReceiver詳解
BroadcastReceiver(廣播接收器)是Android四大組件之一,顧名思義,通過廣播的方式進行消息傳遞,其本質是一個全局的監聽器,可以監聽到各種廣播,可以用來實現不同組件之間的通信。廣播最大的特點就是發送方並不關心接收方是否接到數據,也不關心接收方是如何處理數據的,通過這樣的形式來達到接、收雙方的完全解耦合。
又稱無序廣播,這種廣播完全是非同步的,所有與廣播Intent匹配的BroadcastReceiver,都可以收到這條廣播,並且不分先後順序,視為同時收到,通過Context.sendBroadcast()方法發送。這種廣播的效率比較高,但缺點是接收器不能將處理結果傳遞給下一個接收器,並且無法在中途終止廣播。
這是一種同步執行的廣播,通過Context.sendOrderedBroadcast()方法發送,這種廣播發出後,通過receiver的intent-filter中的android:priority屬性來設置優先順序,優先順序從-1000~1000,數越大,優先順序越高,使用setResult()方法把結果傳遞給下一個接收者,通過getResult()方法獲取上一個接收者傳遞過來的結果,並可以通過abortBroadcast()方法丟棄該廣播,使該廣播不再傳遞給下一個接收者。
粘性廣播通過Context.sendStickBroadcast()方法來發送,用此方法發送的廣播會一直滯留,當有匹配此廣播的接收器被注冊後,該廣播接收器就會收到此廣播。使用此廣播時,需要獲得BROADCAST_STICKY許可權。(在 android 5.0/api 21後不再推薦使用)
Android系統中內置了多個系統廣播,只要涉及到手機的基本操作,基本上都會發出相應的系統廣播。如:開啟啟動,網路狀態改變,拍照,屏幕關閉與開啟,點亮不足等等。每個系統廣播都具有特定的intent-filter,其中主要包括具體的action,系統廣播發出後,將被相應的BroadcastReceiver接收。系統廣播在系統內部當特定事件發生時,有系統自動發出。
以上廣播都屬於全局廣播,發出去的廣播,只要有匹配的接收者,就可以收到廣播。這樣一來會造成一些問題,一是消耗性能,二是容易引起安全性的問題,為了能夠簡單的解決這方面的問題,Android引入了一套廣播本地廣播機制,使用該機制發出的廣播只能夠在本應用內部進行傳遞,並且廣播接收器也只能接收來自本應用發出的廣播。
使用方法
1.注冊本地廣播接收器
2.發送本地廣播
3.注銷本地廣播接收器
本文用到的BroadcastReceiver
Android 8.0(API級別26)取消大部分靜態注冊廣播,建議使用動態廣播
https://developer.android.google.cn/about/versions/oreo/android-8.0
Ⅳ android 怎樣收到系統發送的廣播
要注冊接受廣播的處理程序, 有兩種方式
在AndroidManifest.xml重注冊, 比如監聽系統的開機廣播和屏幕解鎖廣播
<receiver android:name="com.bestjoy.app.common.update.BootCompletedReceiver" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.USER_PRESENT" />
</intent-filter>
</receiver>
這樣, 一旦有定義的action發出來,BootCompletedReceiver的onReceive方法就會回調了,這樣的監聽,不需要你的app已經在運行。
2. 在程序中動態創建監聽器, 比如還是解鎖廣播,
在Activity的onCreate()中生成一個IntentFilter對象
IntentFilter filter=new IntentFilter();
//為IntentFilter添加一個Action
filter.addAction("android.intent.action.USER_PRESENT");
bootCompletedReceiver = newUserPresentReceiver();
registerReceiver(smsReceiver, filter);
在onDestroy的時候去注冊
unregisterReceiver(bootCompletedReceiver);
這樣的方式只有在Activity生命周期onCreate()-onDestroy()之間有效。
對於一些特俗的系統級別的廣播,即使你按照上面的任何一種方式做了, 也可能監聽不到, 這是android 系統做了保護了, 網上查一下就知道了。
Ⅳ android 監聽屏幕是否被觸碰過
在第一個程序中注冊一個廣播接收器.BroadcastReceiver,指定接受的事件為A.
然後在第二個程序中捕獲OnTouch事件,點擊屏幕時,發送指定的廣播A,android的廣播系統所有程序都可以收到.
這樣就實現了你想要的功能.
Ⅵ android里的廣播和通知有什麼區別
1、廣播
android通過廣播來實現不同進程間的通信;對應於廣播(broadcat)還有一個廣播接收器(broadcast receiver);每個廣播指定了對應的action 、 type等信息,每個接收器根據這些信息來過濾是否自己要接收的廣播
2、通知
Notification是Android中常用的一種通知方式,當有未讀簡訊或者未接電話的時候,屏幕的狀態欄就會有提示圖標,這時可以下拉狀態欄來讀取通知。在使用微信的時候(微信在後台運行),如果有新消息時便會發出聲音提示,狀態欄也有相應的微信提示
3、安卓中廣播和通知的關系
廣播是接收請求,通知是把處理結果告訴用戶