android實現(xiàn)藍(lán)牙文件發(fā)送的實例代碼,支持多種機(jī)型
最近項目上需要實現(xiàn)藍(lán)牙傳輸apk的一個功能,能夠搜索周圍的藍(lán)牙手機(jī)并分享文件。從需求上講android手機(jī)自帶的藍(lán)牙傳輸模塊就可以滿足需要了,實現(xiàn)也很簡單。不過讓人頭疼的是,雖然說一般的主流機(jī)型都配置有藍(lán)牙模塊,但是android機(jī)型碎片化太嚴(yán)重,不同android版本手機(jī)藍(lán)牙功能也不一樣。4.0.3以下版本和以上版本使用的藍(lán)牙包是不同的,分別是"com.android.bluetooth"和"com.mediatek.bluetooth"。還有一些廠商對藍(lán)牙模塊進(jìn)行的定制修改,比如華為的c8812。另外,android藍(lán)牙功能是api5以上才有的,所以android的minSdkVersion要不低于5才行。
網(wǎng)上很多android調(diào)用藍(lán)牙發(fā)送模塊的例子,完整并且能夠兼容多系統(tǒng)的例子很少,這里發(fā)一個我用在項目中的例子。
/**
* 通過藍(lán)牙發(fā)送文件
*/
private void sendFile(Activity activity) {
PackageManager localPackageManager = activity.getPackageManager();
Intent localIntent = null;
HashMap<String, ActivityInfo> localHashMap = null;
try {
localIntent = new Intent();
localIntent.setAction(Intent.ACTION_SEND);
File file = new File(TAExternalOverFroyoUtils.getDiskCacheDir(this,
Constants.DOWNLOAD_DIR).getAbsolutePath(),
TextUtils.genApkName(worm.getWormid()));
localIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));
// localIntent.putExtra(Intent.EXTRA_STREAM,
// Uri.fromFile(new File(localApplicationInfo.sourceDir)));
localIntent.setType("*/*");
List<ResolveInfo> localList = localPackageManager.queryIntentActivities(
localIntent, 0);
localHashMap = new HashMap<String, ActivityInfo>();
Iterator<ResolveInfo> localIterator1 = localList.iterator();
while (localIterator1.hasNext()) {
ResolveInfo resolveInfo = (ResolveInfo) localIterator1.next();
ActivityInfo localActivityInfo2 = resolveInfo.activityInfo;
String str = localActivityInfo2.applicationInfo.processName;
if (str.contains("bluetooth"))
localHashMap.put(str, localActivityInfo2);
}
} catch (Exception localException) {
ToastHelper.showBlueToothSupportErr(activity);
}
if (localHashMap.size() == 0)
ToastHelper.showBlueToothSupportErr(activity);
ActivityInfo localActivityInfo1 = (ActivityInfo) localHashMap
.get("com.android.bluetooth");
if (localActivityInfo1 == null) {
localActivityInfo1 = (ActivityInfo) localHashMap
.get("com.mediatek.bluetooth");
}
if (localActivityInfo1 == null) {
Iterator<ActivityInfo> localIterator2 = localHashMap.values().iterator();
if (localIterator2.hasNext())
localActivityInfo1 = (ActivityInfo) localIterator2.next();
}
if (localActivityInfo1 != null) {
localIntent.setComponent(new ComponentName(
localActivityInfo1.packageName, localActivityInfo1.name));
activity.startActivityForResult(localIntent, 4098);
return;
}
ToastHelper.showBlueToothSupportErr(activity);
}
效果:

- Android藍(lán)牙開發(fā)深入解析
- 詳解Android——藍(lán)牙技術(shù) 帶你實現(xiàn)終端間數(shù)據(jù)傳輸
- Android單片機(jī)與藍(lán)牙模塊通信實例代碼
- Android Bluetooth藍(lán)牙技術(shù)使用流程詳解
- 分享Android 藍(lán)牙4.0(ble)開發(fā)的解決方案
- Android 獲取藍(lán)牙Mac地址的正確方法
- Android手機(jī)通過藍(lán)牙連接佳博打印機(jī)的實例代碼
- Android實現(xiàn)藍(lán)牙(BlueTooth)設(shè)備檢測連接
- 詳解Android 藍(lán)牙通信方式總結(jié)
- Android學(xué)習(xí)筆記之藍(lán)牙功能
相關(guān)文章
Android快速實現(xiàn)一個財務(wù)APP程序詳解
這篇文章主要介紹了Android實現(xiàn)的財務(wù)APP程序,結(jié)合前后端共功能完善,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-07-07
Kotlin文件讀寫與SharedPreferences存儲功能實現(xiàn)方法
SharedPreferences是安卓平臺上一個輕量級的存儲類,用來保存應(yīng)用的一些常用配置,比如Activity狀態(tài),Activity暫停時,將此activity的狀態(tài)保存到SharedPereferences中;當(dāng)Activity重載,系統(tǒng)回調(diào)方法onSaveInstanceState時,再從SharedPreferences中將值取出2022-12-12
android view轉(zhuǎn)Bitmap生成截圖的方法
這篇文章主要介紹了android view轉(zhuǎn)Bitmap生成截圖的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-09-09
Android中GPS坐標(biāo)轉(zhuǎn)換為高德地圖坐標(biāo)詳解
最近因為公司需求,在做GPS定位,并且將獲得的坐標(biāo)顯示在高德地圖上,但是實際效果跟我們期望的是有偏差的。通過查閱資料,才知道有地球坐標(biāo)、火星坐標(biāo)之說。下面這篇文章就詳細(xì)介紹了Android中GPS坐標(biāo)轉(zhuǎn)換為高德地圖坐標(biāo)的方法,需要的朋友可以參考下。2017-01-01
Android 實現(xiàn)獲取手機(jī)里面的所有圖片詳解及實例
這篇文章主要介紹了Android 實現(xiàn)獲取手機(jī)里面的所有圖片詳解及實例的相關(guān)資料,需要的朋友可以參考下2017-05-05
android自定義進(jìn)度條漸變色View的實例代碼
這篇文章主要介紹了android自定義進(jìn)度條漸變色View的實例代碼,有需要的朋友可以參考一下2014-01-01

