android屏幕控制
⑴ Android中如何控制調節屏幕亮度
Android的屏幕亮度好像在2.1+的時候提供了自動調節的功能,所以,如果當開啟自動調節功能的時候, 我們進行調節好像是沒有一點作用的,這點讓我很是無語,結果只有進行判斷,看是否開啟了屏幕亮度的自動調節功能。 /*** 判斷是否開啟了自動亮度調節*/public static boolean isAutoBrightness(ContentResolver aContentResolver) { boolean automicBrightness = false;try {automicBrightness = Settings.System.getInt(aContentResolver,Settings.System.SCREEN_BRIGHTNESS_MODE) == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC; } catch (SettingNotFoundException e) { e.printStackTrace();}return automicBrightness;} 然後就是要覺得當前的亮度了,這個就比較糾結了:/*** 獲取屏幕的亮度*/public static int getScreenBrightness(Activity activity) { int nowBrightnessValue = 0; ContentResolver resolver = activity.getContentResolver();try {nowBrightnessValue = android.provider.Settings.System.getInt( resolver, Settings.System.SCREEN_BRIGHTNESS); } catch (Exception e) { e.printStackTrace();}return nowBrightnessValue;} // Settings.System.putInt(activity.getContentResolver(), // Settings.System.SCREEN_BRIGHTNESS_MODE, // Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL); WindowManager.LayoutParams lp = activity.getWindow().getAttributes(); lp.screenBrightness = Float.valueOf(brightness) * (1f / 255f); activity.getWindow().setAttributes(lp);} Settings.System.putInt(activity.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE, Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);} Settings.System.putInt(activity.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE, Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);} 至此,應該說操作亮度的差不多都有了,結束! 哎,本來認為是應該結束了,但是悲劇得是,既然像剛才那樣設置的話,只能在當前的activity中有作用,一段退出的時候,會發現毫無作用,悲劇,原來是忘記了保存了。汗!/*** 保存亮度設置狀態*/public static void saveBrightness(ContentResolver resolver, int brightness) { Uri uri = android.provider.Settings.System .getUriFor("screen_brightness"); android.provider.Settings.System.putInt(resolver, "screen_brightness", brightness);
⑵ android 開發 ,控制整個屏幕的點擊功能屏幕失去焦點功能問題: 求思路啊~~
button.setEnabled(false),單獨的控制項可以這樣設置變成灰色和不可點擊狀態,你可以用ImageButton放圖標,通過它的監聽事件去修改其他控制項的setEnabled值。
⑶ android屏幕旋轉 如何程序實現屏幕旋轉。 按1個按鈕旋轉90°
屏幕旋轉需要在AndroidManifest.xml的的Activity配置中加入android:screenOrientation=」landscape」屬性。
參數說明:
landscape = 橫向
portrait = 縱向
避免在轉屏時重啟Activity
android中每次屏幕方向切換時都會重啟Activity,所以應該在Activity銷毀前保存當前活動的狀態,在Activity再次 Create的時候載入配置,那樣,進行中的游戲就不會自動重啟了。
要避免在轉屏時重啟Activity,可以通過在AndroidManifest.xml文件中重新定義方向(給每個Activity加上android:configChanges=」keyboardHidden|orientation」屬性)。
在需要控制屏幕顯示方向的Activity中重寫onConfigurationChanged(Configuration newConfig)方法。
⑷ 安卓手機屏幕控制
安卓手機都是觸控屏幕,用戶可以直接使用手指操控屏幕即可。
如果需要在電腦操作手機,用戶可以在電腦下載安裝Total Control。
然後進入手機設置,關於手機,連續點擊版本,呼出開發者選項,進入開發者選項勾選開啟USB調試。
啟動Total Control然後將手機使用數據線連接電腦。
正常連接後,按照軟體提示進行操作,即可在電腦端顯示操作手機了。
⑸ 如何設置向日葵Android控制端的屏幕解析度
向日葵Android控制端現支持自適應最佳解析度啦!遠程式控制制時默認自動匹配最佳解析度,為用戶切換到最佳的遠程效果。若需要更改,也可進行手動設置。究竟該如何設置呢?
1、登錄向日葵Android控制端後,進入到設置頁面進行查看,如圖1。
圖2
備註:自適應解析度的功能僅支持向日葵客戶端5.4及以上版本。
⑹ 電腦控制安卓手機屏幕該怎麼做
安卓智能手機的屏幕通過無線WiFi網路實時投射到電腦上顯示,同時電腦端也可以使用滑鼠鍵盤操作手機.註:手機需要授予給相關應用root許可權,電腦和手機需要處於同一區域網內。以下是安卓虛擬機的使用步驟:
下載下面網路雲盤分享的軟體後將壓縮包完整解壓,將裡面的app安裝至安卓手機
完成後電腦就會實時顯示手機屏幕的鏡像畫面,按主頁(home)鍵回到手機桌面,手機上所有的操作都會同步到電腦上顯示,而且滑鼠還可以在PC顯示器上反向控制操作手機哦!
⑺ android 操作屏幕需要什麼許可權
一般最開始的 Android 截屏程序,都是來源於 linux 的截屏方法,android 使用的 Linux 內核,那麼 Linux 下的截屏方法也就最先被 android 採用。Linux 使用了 framebuffer 管理顯示輸出,傳統的辦法就是讀取 framebuffer 的數據,然後得到整個屏幕的數據。此方法在 Android3.0 版本之前是也唯一可行的方法。 然而 linux 採用了嚴格的許可權控制 設備文件,framebuffer 也是其控制之一,在 Android 中只有 root , 和 graphic 組用戶才有許可權讀取:
ls -l /dev/graphics/fb0
crw-rw---- root graphics 29, 0 2015-01-16 03:26 fb0
所以要採用讀取 framebuffer 的方式實現截屏,應用必須獲得 root 許可權。
隨著 Android 顯示系統的變遷,自 Android 4.2 開始, Android 自己增加截屏介面,而且更多的設備採用了多個 framebuffer 使用 overlay 的方式,更有採用硬體 composer 的設備,使得單獨讀取 framebuffer 並不能截取到,一個完整的屏幕。於是這個方法也漸漸被開發者拋棄。
Android 截屏 -- SurfaceFlinger
在 Android 4.0 里,顯示系統採用了新的構架,加入「黃油計劃」,同時也添加截屏介面:
status_t SurfaceFlinger::captureScreen(const sp<IBinder>& display,
sp<IMemoryHeap>* heap,
uint32_t* width, uint32_t* height, PixelFormat* format,
uint32_t sw, uint32_t sh,
uint32_t minLayerZ, uint32_t maxLayerZ)
{
if (CC_UNLIKELY(display == 0))
return BAD_VALUE;
if (!GLExtensions::getInstance().haveFramebufferObject())
return INVALID_OPERATION;
class MessageCaptureScreen : public MessageBase {
SurfaceFlinger* flinger;
sp<IBinder> display;
sp<IMemoryHeap>* heap;
uint32_t* w;
uint32_t* h;
PixelFormat* f;
uint32_t sw;
uint32_t sh;
uint32_t minLayerZ;
uint32_t maxLayerZ;
status_t result;
public:
MessageCaptureScreen(SurfaceFlinger* flinger, const sp<IBinder>& display,
sp<IMemoryHeap>* heap, uint32_t* w, uint32_t* h, PixelFormat* f,
uint32_t sw, uint32_t sh,
uint32_t minLayerZ, uint32_t maxLayerZ)
: flinger(flinger), display(display),
heap(heap), w(w), h(h), f(f), sw(sw), sh(sh),
minLayerZ(minLayerZ), maxLayerZ(maxLayerZ),
result(PERMISSION_DENIED)
{
}
status_t getResult() const {
return result;
}
virtual bool handler() {
Mutex::Autolock _l(flinger->mStateLock);
result = flinger->captureScreenImplLocked(display,
heap, w, h, f, sw, sh, minLayerZ, maxLayerZ);
return true;
}
};
sp<MessageBase> msg = new MessageCaptureScreen(this,
display, heap, width, height, format, sw, sh, minLayerZ, maxLayerZ);
status_t res = postMessageSync(msg);
if (res == NO_ERROR) {
res = static_cast<MessageCaptureScreen*>( msg.get() )->getResult();
}
return res;
}
現在應用可以調用系統介面來截屏,最好的例子就是 screencap : frameworks/base/cmds/screencap/screencap.cpp
然而,系統依然出於安全的考慮,對許可權的控制依然嚴格:使用系統截屏介面需要 READ_FRAMEBUFFER 許可權:
case CAPTURE_SCREEN:
{
// codes that require permission check
IPCThreadState* ipc = IPCThreadState::self();
const int pid = ipc->getCallingPid();
const int uid = ipc->getCallingUid();
if ((uid != AID_GRAPHICS) &&
!PermissionCache::checkPermission(sReadFramebuffer, pid, uid)) {
ALOGE("Permission Denial: "
"can't read framebuffer pid=%d, uid=%d", pid, uid);
return PERMISSION_DENIED;
}
break;
}
而且 READ_FRAMEBUFFER 屬於 system 級別的許可權,非系統應用無法獲得,所以在應用程序中聲明了使用這個許可權,應用程序如果不是 system 程序,依然沒有許可權。第三方程序要能截屏成功還是需要 root 。
⑻ 安卓手機怎麼控制對方屏幕
先聲明下,如果「對方」是蘋果手機,是完全沒有辦法控制的,「對方」是安卓手機或者電腦,就可以控制。
方法呢,是用專門的遠程式控制制軟體。
應用市場里搜索下向日葵遠程式控制制,給用於控制的設備安裝主控端,給被控制的設備安裝客戶端。官網注冊個號(http://sunlogin.oray.com/),然後兩邊的設備都登錄這個號,經過幾步簡單的匹配操作就可以進行遠控了。
要注意的是被控制的設備是手機的話是收費的功能(被控制的是電腦就是免費功能),不過APP里有試用渠道,點3下廣告試用一個付費功能一天。付錢的話最便宜的方式大概5塊一個月,題主自己決定吧~
⑼ 如何控制android手機亮屏
一、概述
我們的Android應用程序很多需要和亮屏和熄屏打交道,比如鬧鍾的時候,需要保持亮屏,之後又需要熄屏。那麼今天,我們來分析下這方面的功能。
二. 系統服務 PowerManager.java
顧名思義,PowerManager.java就是管理我們電源方面的功能的,當然也包括我們屏幕的亮和熄滅。沒錯,我們的應用程序就是通過這個系統服務來實現亮屏和熄屏的功能的。
1. 應用程序獲取PowerManager服務, 我們可以這樣書寫:
復制代碼代碼如下:
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
因為PowerManager是系統服務,所以它的生命周期不是應用程序所能控制的;應用程序只能通過系統,向系統請求獲取PowerManager服務,然後系統把這個服務的應用給我們。
2. goToSleep()方法, 這個方法可以強制我們的屏幕熄屏。我們可以這樣調用:
在上面拿到pm對象之後,這樣調用
pm.goToSleep(SystemClock.uptimeMillis());
3. setBacklightBrightness()方法,這個方法可以設置背光的亮度,從0-255
三. 定時熄滅屏幕
那麼這里,還可以介紹一個控制屏幕的方法就是PowerManager.WakeLock
顧名思義,WakeLock這個東西就是亮屏控制,這里說的亮屏,它定義了幾種類型的亮屏。如下:
類型 cpu 屏幕 鍵盤
PARTIAL_WAKE_LOCK on off off
SCREEN_DIM_WAKE_LOCK on dim off
SCREEN_BRIGHT_WAKE_LOCK on Bright off
FULL_WAKE_LOCK on Bright Bright
由於它定義了這么多類型,每種類型可以指定相對應的部件工作和不工作。那麼我們就可以利用這些類型,從最細粒度來控制我們的屏幕,控制我們的電源,從而讓我們的電源工作時間盡可能的延長(大家都知道,智能手機的電池問題是一個硬傷, 每天一充電,有木有? 別人說用安卓手機的男人都是顧家好男人,因為他每天晚上都要回家充電。。^^).
好的,好的,閑話不扯,繼續。。。
怎麼使用這個WakeLock呢?我們可以這樣寫:
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "TAG");
wakeLock.acquire();
//做我們的工作,在這個階段,我們的屏幕會持續點亮
//釋放鎖,屏幕熄滅。
wl.release();
那麼這里我們也可以這樣使用,就是多少時間後熄滅屏幕
首先點亮屏幕
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "TAG");
wakeLock.acquire();
然後
mTimeHandler.postDelayed(new Runnable(){
public void run(){
wakeLock.release();
}
}, 10*1000);
嗯,延遲10s後熄滅屏幕。。。。
那麼,這里要注意的是acquire()和release()要成對調用哦!也就是說,你申請了亮屏,過段時間,你要是釋放它。