編輯:關於Android編程
最近工作中遇到一個特殊的需求,要求代碼能夠從後台開機android手機藍牙的可見性。而framework提供了一種打開可見性的操作,就是通過向用戶彈出一個提示框,來詢問是否允許開啟可見性。而且限制了最長時間為300秒,代碼如下:
//啟動修改藍牙可見性的Intent Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE); //設置藍牙可見性的時間,方法本身規定最多可見300秒 intent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 300); startActivity(intent);
但通過android的自帶的settings程序,我們可以直接開機藍牙可見性。所以下載settings的源碼,進行分析。找到了開啟藍牙可見性的代碼,如下:
private void setEnabled(boolean enable) {
if (enable) {
int timeout = getDiscoverableTimeout();
mLocalAdapter.setDiscoverableTimeout(timeout);
long endTimestamp = System.currentTimeMillis() + timeout * 1000L;
LocalBluetoothPreferences.persistDiscoverableEndTimestamp(mContext, endTimestamp);
mLocalAdapter.setScanMode(BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE, timeout);
updateCountdownSummary();
} else {
mLocalAdapter.setScanMode(BluetoothAdapter.SCAN_MODE_CONNECTABLE);
}
}public void setDiscoverableTimeout(int timeout) {
BluetoothAdapter adapter=BluetoothAdapter.getDefaultAdapter();
try {
Method setDiscoverableTimeout = BluetoothAdapter.class.getMethod("setDiscoverableTimeout", int.class);
setDiscoverableTimeout.setAccessible(true);
Method setScanMode =BluetoothAdapter.class.getMethod("setScanMode", int.class,int.class);
setScanMode.setAccessible(true);
setDiscoverableTimeout.invoke(adapter, timeout);
setScanMode.invoke(adapter, BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE,timeout);
} catch (Exception e) {
e.printStackTrace();
}
}public void closeDiscoverableTimeout() {
BluetoothAdapter adapter=BluetoothAdapter.getDefaultAdapter();
try {
Method setDiscoverableTimeout = BluetoothAdapter.class.getMethod("setDiscoverableTimeout", int.class);
setDiscoverableTimeout.setAccessible(true);
Method setScanMode =BluetoothAdapter.class.getMethod("setScanMode", int.class,int.class);
setScanMode.setAccessible(true);
setDiscoverableTimeout.invoke(adapter, 1);
setScanMode.invoke(adapter, BluetoothAdapter.SCAN_MODE_CONNECTABLE,1);
} catch (Exception e) {
e.printStackTrace();
}
}如果想實現超時後自動關閉可見性的效果,使用Handler
以上代碼在android4.2以上可以允許,4.2以下會因為缺少系統權限而運行失敗。
[android] 百度地圖開發 (二).定位城市位置和城市POI搜索
一. 百度地圖城市定位和POI搜索知識 上一篇文章百度地圖開發(一)中講述了如何申請百度APIKey及解決顯示空白網格的問題.該篇文章主要講述如何定位城市位置、定位自己的
android自定義ImageView仿圖片上傳示例
看下效果圖主要看下自定義view 代碼public class ProcessImageView extends ImageView{ private Context
Android Configuration橫豎屏切換時Activity生命周期調用
問題:橫豎屏切換時Activity的生命周期?測試環境:華為mate7 package com.virglass.beyond.activity;import
解決Android從相冊中獲取圖片出錯圖片卻無法裁剪問題的方法
在學習獲取相冊中圖片進行裁剪的時候遇到了比較大的問題,在糾結了近半天才真的解決,下面分享一下學習經驗。問題:選擇了相冊中的圖片之後要進入圖片裁剪的時候出錯,(華為)手機提