android 藍芽通訊實現手機藍芽的開啟,並掃描附近可見的藍芽裝置
藍芽是一種重要的短距離無線通訊協議,廣泛應用於各種裝置(手機,醫療,汽車等)。藍芽是比較常用的無線通訊裝置,早研究成為手機的標配。現在的安卓手機基本上都有藍芽,所有通過藍芽對資料有很好的硬體基礎
在Android中,與藍芽有關的類和介面在android.bluetooth包中。其中BluetoothAdapter是藍芽中的核心類,代表本地的藍芽介面卡裝置。BluetoothAdapter類讓使用者能執行基本的藍芽任務。例如: 初始化裝置的搜尋,查詢可匹配的裝置集,使用一個已知的MAC地址來初始化一個BluetoothDevice類,建立一個 BluetoothServerSocket類以監聽其它裝置
開啟和掃描藍芽,並將掃面到的藍芽裝置顯示在listview上
BluetoothActivity
package cn.edu.cqu.bluetooth; import java.util.ArrayList; import java.util.Iterator; import java.util.Set; import com.example.project.R; import android.app.Activity; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; import android.view.View; import android.view.Window; import android.view.View.OnClickListener; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; public class BluetoothActivity extends Activity{ private Button button2; private ListView list; private ArrayAdapter mArrayAdapter; private BluetoothReceiver bluetoothReceiver; private BluetoothAdapter bluetoothAdapter; private BluetoothDevice device; private ArrayList<String> PairedMaclist; private TextView textView1; int flag; @Override protected void onCreate(Bundle savedInstanceState) { this.requestWindowFeature(Window.FEATURE_NO_TITLE); super.onCreate(savedInstanceState); setContentView(R.layout.bluetooth); list = (ListView)findViewById(R.id.listView); textView1 = (TextView)findViewById(R.id.textView); //建立一個IntentFilter物件,將其action指定為BluetoothDevice.ACTION_FOUND,查詢藍芽 IntentFilter intentFileter = new IntentFilter(BluetoothDevice.ACTION_FOUND); bluetoothReceiver = new BluetoothReceiver(); //註冊廣播接收器 registerReceiver(bluetoothReceiver, intentFileter); bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); button2 = (Button)findViewById(R.id.scanButton); button2.setOnClickListener(new ScanButtonListener()); list.setOnItemClickListener(new ListViewListener()); openBluetooth(); mArrayAdapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1); PairedMaclist=new ArrayList<String>(); } @Override protected void onDestroy() { unregisterReceiver(bluetoothReceiver); super.onDestroy(); } private void openBluetooth() { //bluetoothAdapter.enable(); if(bluetoothAdapter != null){ if(!bluetoothAdapter.isEnabled()){ Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); startActivity(intent); } //得到所有已經被對的藍芽介面卡物件 Set<BluetoothDevice> devices = bluetoothAdapter.getBondedDevices(); if(devices.size() > 0){ for(Iterator<BluetoothDevice> iterator = devices.iterator();iterator.hasNext();){ BluetoothDevice bluetoothDevice = (BluetoothDevice) iterator.next(); //得到遠端藍芽裝置的地址 System.out.println(bluetoothDevice.getAddress()); } } } else { //System.out.println("沒有藍芽裝置"); Toast.makeText(BluetoothActivity.this, "沒有藍芽裝置",0).show(); } } class BluetoothReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if(BluetoothDevice.ACTION_FOUND.equals(action)){ //得到intent裡面的資訊 device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); Toast.makeText(BluetoothActivity.this, "發現藍芽裝置",0).show(); //System.out.println(device.getAddress()); mArrayAdapter.add(device.getName() + "\n" + device.getAddress()); PairedMaclist.add(device.getAddress()); list.setAdapter(mArrayAdapter); } } } class ScanButtonListener implements OnClickListener{ @Override public void onClick(View arg0) { mArrayAdapter.clear(); bluetoothAdapter.startDiscovery(); Toast.makeText(BluetoothActivity.this, "開始掃描",0).show(); } } class ListViewListener implements OnItemClickListener{ @Override public void onItemClick(AdapterView<?> arg0, View view, int position, long id) { String str = PairedMaclist.get(position); //System.out.println("Str-------------" + str); Intent intent = new Intent(BluetoothActivity.this,BluetoothWaveform.class); intent.putExtra("BluetoothMAC",str); startActivity(intent); } } }
顯示和掃描藍芽佈局檔案
<pre name="code" class="html"><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_margin="20dp" android:orientation="vertical" > <Button android:id="@+id/scanButton" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="20dp" android:text="掃描藍芽裝置"/> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="20dp" android:textSize="20sp" android:text="搜尋到以下裝置:"/> <ListView android:id="@+id/listView" android:layout_width="match_parent" android:layout_height="wrap_content" ></ListView> </LinearLayout><img src="https://img-blog.csdn.net/20150409144408261?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2hlbmZlbmdkZWp1YW5saWFu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
相關推薦
android 藍芽通訊實現手機藍芽的開啟,並掃描附近可見的藍芽裝置
藍芽是一種重要的短距離無線通訊協議,廣泛應用於各種裝置(手機,醫療,汽車等)。藍芽是比較常用的無線通訊裝置,早研究成為手機的標配。現在的安卓手機基本上都有藍芽,所有通過藍芽對資料有很好的硬體基礎 在Android中,與藍芽有關的類和介面在android.bluetooth包
Android適配安卓6.0藍芽通訊實現過程
實現需要的許可權:由於安卓4.x版以上的版本使用藍芽,需要開啟定位許可權才能搜尋到附近的藍芽裝置 1 2 3 4 五 <uses-permission android:name="android.permission.BLUETOOTH"/>
手機暗屏下,後臺不能使用藍芽,後臺gps不能定位
一般情況下手機鎖屏後,部分手機,Android系統為了省電以及減少CPU消耗,在一段時間手機將會進入休眠狀態。 解決方案: 首先在AndroidManifest.xml中申請WakeLock許可權。 <uses-permission andr
android中利用Socket實現手機客戶端與PC端進行通訊
伺服器端: import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; impor
Android中Https通訊實現_ 單向認證
客戶端與服務端單向認證即是在客戶端的網路請求和webview中設定信任所有證書,然後在與服務端進行Https網路通訊的時候,客戶端不必進行證書校驗也能進行網路通訊,否則就會報證書不受信異常。 缺陷:容易受到中間人攻擊。 概覽 TrustManager和Hos
Android中Https通訊實現_瞭解Https
概覽 什麼是Https Https和Http的區別 Https證書 什麼是Https HTTPS(全稱:Hypertext Transfer Protocol over Secure Socket Layer),是以安全為目標的HTTP通道,簡單講是
Android中Https通訊實現_中間人攻擊、DNS欺騙和會話劫持
上一篇文章記述了在Android中使用Https進行單向認證的配置,但單向認證存在中嚴重的安全漏洞,其中最容易受到中間人攻擊和DNS欺騙以及會話劫持,本文主要講述進行中間人攻擊、DNS欺騙和會話劫持的方式。 概覽 什麼是中間人攻擊 模擬中間人攻擊
Android 程序間通訊實現原理分析
/** * 客戶端控制介面 */ public class MainActivity extends Activity { public static final String TAG = "MainActivity"; // 服務端 AndroidManifest.xml中的intent-fil
Android TabLayout+ViewPager+Fragment實現tab欄的時候,無法實時更新ViewPager內的Fragment問題終極解決方法
TabLayout+ViewPager+Fragment模式在應用中必不可少,有時候我們可能會遇到tab欄會動態改變的問題,如新增,或刪減,這時候就需要把viewpager內相應的fragment新增或刪減; 如想做以下等操作? 1、更新單個item mDataList.remove(0
android開發 19 呼叫手機的攝像頭錄影,並播放
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
Android RecyclerView 實現瀑布流交錯效果,並使最後一行子View高度佔滿RecyclerView
而在實現完瀑布流後,覺得滑動到底部時,最後一行的高度,沒有佔滿外部View,感覺不太好。(真正的瀑布流應該是條目數近乎無窮,可以一直載入更多) 既然是瀑布流,那麼就選用StaggeredGridLayoutManager。 mRecyclerView.s
h5+實現手機端的錄音,拍照,錄影
使用h5+即h5plus可以實現呼叫手機的功能實現語音的錄製播放,圖片上傳下載,拍照,錄影的功能,並提供上傳下載的功能。開發工具使用hbuilder,該開發工具有模板和demo可以參考實現快速的開發app功能。使用h5呼叫硬體的功能,實現原生的效果,前
Android 跑馬燈效果實現的兩種方式,解決和viewpager的衝突問題
第一篇部落格寫一點簡單的東西,多麼的簡單,就是一個跑馬燈,簡單的要死。所以話不多,寫起來。首先我們來講一個段子先緩和一下氣氛。大學的時候,隔壁宿舍老喜歡蹭我的wifi,煩死了,然後我把wifi名改成了:206有個帥哥是誰。密碼是我的名字,媽的看誰還蹭,結果。除了
Android 實現Json數據解析,並進行應用
二維 message contex title 開發 blog asmx ear 身份證 從網站上獲取數據然後再客戶端進行解析是常見的數據交互。下面是常用的一些接口網址: webservice工廠接口 http://www.36wu.com 快遞查詢接口http://
微信公眾號開發《四》使用微信JS-SDK實現手機圖片上傳,支援壓縮、預覽。並下載圖片到自身伺服器
在這貼上上三篇博文連結,方便大家查閱互相學習: 本次講解微信開發第四篇:呼叫微信JS-SDK實現上傳手機圖片到伺服器,是非常常見的功能。如我們看到的使用者上傳頭像 下面是本次要實現的效果圖,支援預覽,壓縮上傳(自帶,可引數控制) 1.準備工作:工欲善其事,必先利其
Android 實現省份城市的選擇,並獲取城市編號
該程式主要使用 中央氣象局 省份 城市資料庫為基礎 進行讀取 下載的資料庫 db_weather.db 放到sdcard/weather 目錄下面 方便後續操作 為了更好的瞭解資料庫,使用 SQLite Database Browser 可以開啟資
Android Handler和ProgressBar實現進度條的開始,暫停,停止,後退和迴圈
import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.view.View; import android.view.View.OnClickListen
WebForm實現文件上傳,並預覽
image form ict itl lec nbsp style object 是否 實現效果: 頁面代碼: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inh
作業1#python用列表實現多用戶登錄,並有三次機會
循環 HA 成功 NPU name 單用戶 登錄 [1] and 1 username = ["juebai","haha"] 2 password = [123,456] 3 count = 0 4 while count < 3: 5 _use
lua 4 使用table實現其他數據結構,並介紹遍歷方法
ger true key 51cto 先進先出 https ash 開發者 默認 本文會以vector / map / set 這三種數據類型的角度來梳理 table 支持的不同遍歷方式。 table as array / vector 一般,C/C++中的 array