wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

標題: 基于安卓經(jīng)典藍牙開發(fā)-串口 附源碼 [打印本頁]

作者: 鄧家文    時間: 2020-11-28 17:15
標題: 基于安卓經(jīng)典藍牙開發(fā)-串口 附源碼
前段時間自己學做了一個基于安卓經(jīng)典藍牙的app,也遇到不少坑,在網(wǎng)上相對與BLE低功耗藍牙來說,它的資料方面都是比較缺少的,而且網(wǎng)上經(jīng)典藍牙源碼大部分都很長,對于入門的同學來說,看沒兩分鐘就產生放棄的念頭了。
第一步:在AndroidManifest中添加:
<!--管理藍牙需要-->
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<!--搜索藍牙需要,因為藍牙可以被用來定位,所以需要定位權限-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
上面都是我們使用到設備功能的權限申請。
第二步:設置兩個按鈕分別是打開和關閉藍牙
對藍牙設備干事情,那么我們就得拿到它的接口來控制它
//獲取藍牙適配器
private BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
打開藍牙:
1、
public void OpenBlueTooth(View view) {
    if(isSupportBlueTooth() == true) {
        if(!BlueToothState()) {
            Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
            startActivityForResult(intent,0);
            showToast("親,打開了噢!需要什么幫助嗎?");
        }
        else {
            showToast("親,已經(jīng)打開了噢,無需重復打開。");
        }
    }
    else {
        showToast("親,您不支持此藍牙設備!");
    }
}
2、打開藍牙應該先確定使用的手機是否支持藍牙設備(手機沒有就沒必要進行下一步了)
//判斷是否支持藍牙
public boolean isSupportBlueTooth() {
    if(mBluetoothAdapter != null) {
        return true;
    }
    else {
        return false;
    }
}
3、然后打開前還需要知道手機是否打開藍牙了吧!那就獲取手機現(xiàn)在藍牙設備的狀態(tài)
//獲取藍牙狀態(tài)
public  boolean BlueToothState() {
    assert (mBluetoothAdapter != null);   //若不支持該藍牙設備會有個斷言
    return mBluetoothAdapter.isEnabled();  
}
2、3小步驟都只是個函數(shù)功能體,都是為1、步驟使用的,初學者會疑惑什么是斷言,就是做判斷,真的那么下面就不執(zhí)行咯!還有下面是是一個消息對象,
獲取用戶對藍牙適配器申請打開的請求消息,使用startActivityForResult對消息做出應答,會有對話框的提示效果
Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(intent,0);
關閉藍牙:
public void CloseBlueTooth(View view) {
    mBluetoothAdapter.disable();
    showToast("親,我們會再見面的!");
}
先說明一點我這里的還是都在有View view形參接口,這是一個動作的監(jiān)聽接口,下圖有設置的圖片,這里設置就可以了。

感覺打開藍牙和關閉藍牙挺簡單的吧!
難度開始來了噢!

第三步:
打開了藍牙我們就得弄一個來搜索周圍的設備吧!
下面是一個定義好的搜索藍牙函數(shù)
public void startDiscovery() {
    if (mBluetoothAdapter.isDiscovering()) {mBluetoothAdapter.cancelDiscovery();  Toast.makeText(this,"搜索器打開",Toast.LENGTH_SHORT).show();}
    mBluetoothAdapter.startDiscovery();
    if (!mBluetoothAdapter.isDiscovering()) {Toast.makeText(this,"搜索器沒打開",Toast.LENGTH_SHORT).show();}
}
有點看不懂嗎,其實還好吧,就是第一次判斷是否開啟搜索周圍藍牙設備,開啟了就把它關了,重新打開在搜索,在判斷我是否開啟了搜索沒。(isDiscovery是開啟搜索,cancelDiscovery是關閉搜索的意思)
有搜索藍牙設備函數(shù)了,我們就搞一個按鍵讓其有觸發(fā)效果吧!
//按鈕搜尋藍牙
Button button_discovery = (Button) findViewById(R.id.DiscoveryBT);
button_discovery.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        startDiscovery();
    }
});
開啟了搜索藍牙設備我們得有東西接收這些設備吧,不然它偷偷摸摸搜索鬼知道它搜了什么東西。那我們就得用廣播把這些偷偷摸摸搜索到了設備把它弄出來,放進“箱子”里。
這就是我們定義的廣播接收器
public class MyReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        if(intent.getAction().equals(BluetoothAdapter.ACTION_DISCOVERY_STARTED)) {
            Toast.makeText(context, "開始", Toast.LENGTH_SHORT).show();
        } else if (BluetoothDevice.ACTION_FOUND.equals(intent.getAction())) {
            BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
            //////////////////////////////////////////////創(chuàng)建搜索藍牙列表的///////////////////////////////////////////////////////////////////
            for (int i = 0; i < deviceAdress.size(); i++) {
                if (deviceAdress.get(i).getAddress().equals(device.getAddress())) return;
                //上面if語句就是去除已經(jīng)獲取的藍牙設備
            }
            // 不是重復的就添加到列表中(獲取未配對的藍牙設備)
            deviceAdress.add(device);  //添加地址到列表中   用于鑒別是否已經(jīng)添加列表和點擊事件用的
            deviceName.add("地址:"+device.getAddress()+"\n"+"名稱:"+device.getName());  //存放藍牙名稱和地址用于顯示到列表上的

        } else if(intent.getAction().equals(BluetoothAdapter.ACTION_DISCOVERY_FINISHED)) {
        }
    }
}
代碼都有注釋我就不一一說明了,說一下箱子要在外面定義
public ArrayList<BluetoothDevice> deviceAdress = new ArrayList<>();  //存放藍牙設備(這里Adress我忘了改過來了,這是存放設備不是設備地址)
public ArrayList<String> deviceName = new ArrayList<>();  //存放藍牙名稱和地址
然后就是用廣播類里面用if那些進行信息篩選(用藍牙設備這個方法獲取設備的信息BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE
然后就是把搜索到的device
你可以用Toast.make()打印一下信息看看效果
記得廣播接收器的使用一定要注冊廣播接收器,不然就廢掉了
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(BluetoothDevice.ACTION_FOUND);//發(fā)現(xiàn)藍牙
intentFilter.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);//搜索停止
intentFilter.addAction(BluetoothAdapter.ACTION_DISCOVERY_STARTED );//搜索啟動
//上面是添加動作事件
//注冊廣播接收者的對象
registerReceiver(myReceiver,intentFilter);
都放在箱子里了,我們應該把它拿出來一個一個展示一下吧!
這展示的方法就是用列表把它展示出來:
public ListView listView;   //定義展示列表

//////////////////////////////////////////////創(chuàng)建搜索藍牙列表的///////////////////////////////////////////////////////////////////并把
arrayAdapter = new ArrayAdapter(this, android.R.layout.simple_expandable_list_item_1,deviceName);  //實例化ArrayAdapter對象deviceName集合數(shù)據(jù)放入arrayAdapter適配器集合內
listView = (ListView) findViewById(R.id.list);  //獲取列表框的
listView.setAdapter(arrayAdapter);  //將arrayAdapter集合內的數(shù)據(jù)加載到列表框 就是適配器對象與ListView關聯(lián)
這樣放進列表你以為就可以了嗎,你怎么知道它加載了多少個已發(fā)現(xiàn)的設備呢?這需要我們到廣播接收器這個線程中間斷刷新載入新設備
arrayAdapter.notifyDataSetChanged();  //更新列表
下面是我定義的一個刷新列表搜索
        Button button= (Button) findViewById(R.id.Broadcast);  //獲取布局文件中的廣播按鈕
        button.setOnClickListener(new View.OnClickListener() { //為按鈕設置單擊事件
            @Override
            public void onClick(View v) {
                //////////藍牙刷新///////////////
                deviceAdress.clear();         //
                deviceName.clear();           //
                startDiscovery();             //
                ////////////////////////////////
            }
        });
到現(xiàn)在你就可以試試你做的可不可以將搜索到的藍牙加載到列表中顯示了,可以的化,看看可不可以刷新列表。

第四步:
把我們列表中的設備能進行點擊觸發(fā)
    //連接藍牙
    public void Connect_BT(ArrayList<BluetoothDevice> deviceAdress) {
        //MainActivity 實現(xiàn)OnItemClickListener 然后重寫方法
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                BluetoothDevice clickDevice = (BluetoothDevice)deviceAdress.get(position);
                String s1 = String.valueOf(position);  //編號
                Toast.makeText(MainActivity.this, s1 + "--" + clickDevice.getName() + "--" + clickDevice.getAddress(),Toast.LENGTH_SHORT).show();
                //在連接前需要先關閉搜索
            }
        });
    }
把我們列表按鍵觸發(fā)這個類放到廣播接收器這個線程中
Connect_BT(deviceAdress);
按下列表就有這個提示框咯!開心吧

第五步:
連接我們選中的藍牙
連接這些藍牙都需要協(xié)議的,都是廠家底層工作人員定好的
//手機連接的UUID
//設備連接的UUID由廠商決定。
private final String BLUETOOTH_UUID = "00001101-0000-1000-8000-00805F9B34FB";   //藍牙通信的UUID,必須為這個,如果換成其他的UUID會無法通信
private BluetoothSocket bluetoothSocket = null;
UUID我就步詳細說了,你們自行百度。BluetoothSocket套接字就是連接藍牙服務器用的。
在Connect_BT添加下面代碼即可()
                //在連接前需要先關閉搜索
                //點擊列表,去請求服務器
                if (clickDevice != null) {
                    new Thread(new Runnable() {
                        @Override
                        public void run() {
                            try {
                                bluetoothSocket = clickDevice.createRfcommSocketToServiceRecord(UUID.fromString(BLUETOOTH_UUID));
                                bluetoothSocket.connect();
                            } catch (IOException e) {
                                e.printStackTrace();
                            }
                        }
                    }).start();
                }
這我要說明一下connect方法會阻塞線程,我們需要在下面創(chuàng)建一個子線程來運行,不然程序奔潰別找我就可以了。
到這我們就所有基本弄好了

第五步:
接收和發(fā)送數(shù)據(jù)
這里我略微講一下
// 用來收數(shù)據(jù)
InputStream inputStream = bluetoothSocket.getInputStream();
// 用來發(fā)數(shù)據(jù)
OutputStream outputStream;
下面是我用按鍵發(fā)送數(shù)據(jù)的代碼(參考)
Button button_oc3 = (Button) findViewById(R.id.button_open_close3);
button_oc3.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        String text = "d12";
        try {
            outputStream = bluetoothSocket.getOutputStream();
            outputStream.write(text.getBytes());
            outputStream.flush();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
});
記住完成BluetoothSocket的一系列操作后,記住用close()方法關閉套接字噢,不然手機很耗電,燒壞別找我麻煩。
接收數(shù)據(jù)的話會比較麻煩一點點,需要用一個線程和while死循環(huán)繼續(xù)時刻接收(因為InputStream 也會阻塞線程的)

到這就告一段落了。
我有一個老師是這樣說過的游戲打累了就休息一下,休息的方法就是敲代碼。

在社會學到的要學會分享回報社會

(有什么好的想法和建議可以分享一下給我)
廣州大學華軟軟件學院djw

全部資料51hei下載地址(源碼):
mybluetooth_finish.zip (412.24 KB, 下載次數(shù): 64)
經(jīng)典藍牙開發(fā)過程.docx (148.04 KB, 下載次數(shù): 56)

作者: 思慶    時間: 2021-2-3 22:07
樓主,這個是用eclipse編寫的嘛
作者: 鄧家文    時間: 2021-3-22 20:37
思慶 發(fā)表于 2021-2-3 22:07
樓主,這個是用eclipse編寫的嘛

android studio
作者: xdqfc    時間: 2021-4-7 17:45
感謝樓主的無私奉獻,文件可以打開,可以生成APK,內容也很通俗易解。有參考價值。

作者: macadam    時間: 2023-12-27 11:28
寫得很詳細,學習下。




歡迎光臨 (http://www.izizhuan.cn/bbs/) Powered by Discuz! X3.1
日本高清视频精品| 久久婷婷中文字幕| 日韩精品视频免费专区在线播放 | www.av免费| 午夜免费福利小电影| 日本一区二区在线播放| 欧美电影免费观看完整版| 国产午夜精品一区二区三区视频 | 在线人成日本视频| 米奇777在线影院线| 国产毛片在线视频| 大地资源高清在线视频观看| 性生活免费在线观看| 亚洲国产一区二区三区在线| 国产成人精品在线播放| 亚洲欧洲日韩综合一区二区| 欧美亚洲一区| 国产精品一区二区av日韩在线 | 椎名由奈jux491在线播放| 51午夜精品视频| 亚洲精品自拍偷拍| 在线观看成人免费视频| 国产日产欧美精品一区二区三区| 老司机免费视频久久| 日韩脚交footjobhd| 久热中文字幕在线精品免费| 精产国品一区二区| 极品尤物一区二区| www日本在线观看| 欧美色图另类小说| 97涩涩爰在线观看亚洲| 亚洲午夜久久久| 国产999精品久久久久久| 国色天香一区二区| 精品一区欧美| 亚洲乱码一区| 电影网一区二区| av片在线观看网站| 伦理片一区二区三区| 免费在线观看羞羞视频| 国产视频xxx| 国产亚洲成人av| 亚洲制服丝袜在线播放| 中文字幕天天干| 亚洲人成无码网站久久99热国产| 国产精品青草久久久久福利99| 亚洲精品综合精品自拍| 日韩一二三区不卡| 在线视频欧美精品| 高跟丝袜一区二区三区| 亚洲在线一区二区三区| 中日韩av电影| 久久久久亚洲蜜桃| 国产suv精品一区二区883| 久久国产麻豆精品| 麻豆一区二区三区| 麻豆精品视频在线观看| 久久美女性网| 亚洲欧美春色| 久久久精品性| 日韩成人免费看| 日韩欧美一区二区三区免费看| 福利欧美精品在线| 成人性生交大片免费看96| 日韩视频在线直播| 草草视频在线一区二区| 99久久婷婷国产综合精品青牛牛| 日本久久伊人| 加勒比久久高清| 欧美性受ⅹ╳╳╳黑人a性爽| 色久视频在线播放| 青草久久伊人| 理论视频在线| yourporn在线观看视频| www.色五月| a√在线视频| av美女在线| 日本成年免费网站| 亚洲人性生活视频| 国产精品一区二区三区四区色| 福利片在线观看| 日本a级在线| 922tv免费观看在线| 国产宾馆自拍| 污视频网站在线免费观看| 日本中文字幕一区二区有码在线| 青青操视频在线| a级网站在线播放| 亚洲校园激情春色| 国产免费区一区二区三视频免费 | 亚洲一区二区偷拍精品| 午夜欧美2019年伦理| 欧美午夜电影网| 精品国产成人系列| www国产亚洲精品久久网站| 欧美多人爱爱视频网站| 国产精品久久久久久亚洲调教 | 精品一区视频| 国产亚洲成av人片在线观黄桃| 激情小说一区| 婷婷激情图片久久| 三级久久三级久久久| 国产精品一区一区| 欧美激情一区二区三区全黄| 亚洲综合久久av| 欧美日韩国产系列| 亚洲系列中文字幕| 51久久精品夜色国产麻豆| 不卡视频一区二区三区| 日韩av高清在线播放| 欧美精品久久久久久久自慰| 97超碰成人在线| 受虐m奴xxx在线观看| 精品在线视频观看| 国产成人a人亚洲精品无码| 亚洲中文无码av在线| 少妇太紧太爽又黄又硬又爽小说| 久久免费视频6| 91九色蝌蚪91por成人| 四虎影视免费永久在线| 激情视频国产| 成人影院在线看| 亚洲图片小说区| 91综合在线| 蜜臀久久久久久久| 欧美激情一区二区在线| 欧美最猛性xxxxx直播| 亚洲美女视频网| 热久久免费视频精品| 欧美激情专区| 国产无遮挡猛进猛出免费软件 | hbad中文字幕| 一个色在线视频| 一级二级三级在线观看| 波多野结衣亚洲| 精品国产成人| 国产综合久久久久久鬼色| 自拍av一区二区三区| 日韩一级欧美一级| 97视频在线观看亚洲| 久久人人爽爽人人爽人人片av| 国产美女网站在线观看| aaaaa级少妇高潮大片免费看| 中文字幕日韩三级片| 亚洲精品视频在线观看免费视频| 2017亚洲男人天堂| 粉嫩tv在线播放| 免费成人在线电影| 日韩一区三区| av一区二区久久| 欧美人妖巨大在线| 久久免费观看视频| 亚洲自拍的二区三区| 不许穿内裤随时挨c调教h苏绵 | 亚洲国产毛片aaaaa无费看| 香蕉久久一区二区不卡无毒影院 | 日韩写真在线| 国产成人精品一区二三区在线观看 | 国产一级片儿| 国产日本在线视频| 成人台湾亚洲精品一区二区| 日韩二区三区四区| 亚洲一级片在线观看| www.欧美精品| 色一情一乱一伦一区二区三区| www亚洲国产| 国产黑丝一区二区| 国产suv一区二区| 日本在线аv| 高清在线一区| 久久一区中文字幕| 五月天国产精品| 亚洲精品av在线| 亚洲va欧美va国产综合剧情| 免费成人午夜视频| 日韩激情一区二区三区| 国产chinese男男gaygay网站| 疯狂做受xxxⅹ高潮视频免费| 国产欧美一区二区三区精品酒店| 亚洲国产免费看| 欧美日韩国产精品| 海角国产乱辈乱精品视频| 久久久无码中文字幕久...| 免费黄在线观看| 亚洲日韩色图| 日本电影在线观看| 影音先锋亚洲电影| 婷婷国产v国产偷v亚洲高清| 久久久久久久久网站| 真人抽搐一进一出视频| 久久久无码精品亚洲国产| 日本成片免费高清| 国内自拍亚洲| 丰满亚洲少妇av| 久久精品观看| 午夜伦欧美伦电影理论片| 高清欧美性猛交xxxx黑人猛交| 波多野结衣 作品| xxxxxx国产| 色偷偷亚洲第一综合| 91大神xh98hx在线播放| 亚州一区二区| www.激情成人| 中文字幕亚洲一区在线观看| 伊人久久大香线蕉午夜av| 免费成人美女女在线观看| 91蝌蚪91九色| 成人动漫视频在线观看| 97se亚洲国产综合在线| 久久精品国产99国产精品澳门| 国产成人一区二区三区别| 日韩精品在线免费视频| 在线观看国产v片| 久本草在线中文字幕亚洲| 久久久一区二区| 欧美精品在线免费观看| 热久久精品国产| 午夜精品久久久久久久爽| 三区四区电影在线观看| 亚洲国产电影| 欧美一级二级三级乱码| 日本不卡久久| 成人免费看片98欧美| 涩涩视频在线观看免费| 午夜视频一区| 一区二区三区丝袜| 国产精品1234| 一级黄色电影片| 国产三级第一页| 超碰超碰在线| 久久66热re国产| 亚洲日韩欧美视频一区| 韩国无码av片在线观看网站| 91精品人妻一区二区三区蜜桃欧美 | 色综合久久六月婷婷中文字幕| 日韩最新在线视频| 成人在线激情网| 先锋影视中文字幕| 欧美日韩伦理一区二区| 欧美国产日韩在线观看| 国产精品久久久久77777| wwwwxxxx国产| 麻豆电影在线| 日韩午夜免费视频| 色久优优欧美色久优优| 国产精品成人av在线| 91成年人网站| 超碰在线公开超碰在线| 亚洲网址在线| 精品一区二区三区三区| 欧美一级片中文字幕| 国产免费黄色录像| 久草在线中文最新视频| 国产成人午夜精品影院观看视频| 亚洲第一色中文字幕| 日韩极品视频在线观看| 少妇又色又爽又黄的视频| 国产亚洲精品精品国产亚洲综合| 国产精品毛片久久久久久久| 久久婷婷色综合| 国产人妖伪娘一区91| 9l视频白拍9色9l视频| 成人亚洲国产| 欧美激情偷拍自拍| 欧美变态tickle挠乳网站| www.99热这里只有精品| 久久国产精品久久久久久小说| 久久中文资源| 制服.丝袜.亚洲.另类.中文| www.成年人视频| 国产最新自拍视频| 国产一区国产二区国产三区| 欧美一区二区三区色| 国模吧无码一区二区三区| 九色精品视频在线观看| 成人一级毛片| 亚洲精品videossex少妇| 182午夜在线观看| 男女激情视频网站| 日韩精品久久理论片| 久久久免费精品| 男女性高潮免费网站| 性欧美video高清bbw| 日本一区二区视频在线| 精品欧美日韩在线| 六月婷婷中文字幕| 免费不卡中文字幕在线| 精品国产乱码久久久久久蜜臀 | 性欧美video视频另类| 激情小说一区| 日韩午夜电影在线观看| 911福利视频| 日本韩国福利视频| 国产成人免费在线观看不卡| 成人女保姆的销魂服务| 亚洲综合网av| 深夜国产在线播放| 亚洲日本乱码在线观看| 亚洲激情图片| 精品一区二区三区高清免费不卡| 欧美理论视频| 久久精品这里热有精品| 紧身裙女教师波多野结衣| 韩国成人二区| 色婷婷亚洲综合| 三年中国国语在线播放免费| free性欧美1819hd| 国产在线一区二区| 久久久99免费视频| 国产在线拍揄自揄拍无码视频| 妞干网免费在线视频| 色综合咪咪久久| 不卡的在线视频| 美女欧美视频在线观看免费| 国产人成一区二区三区影院| 亚洲五月六月| 成年网站免费视频黄| 久久99九九99精品| 99视频网站| 影音先锋男人看片资源站| 午夜日韩视频| 国产精品爽黄69天堂a| 精品国产99久久久久久宅男i| 日韩欧美精品综合| 97免费在线视频| 一区二区三区播放| 欧美精选视频在线观看| 国产亚洲欧洲997久久综合| 欧美三级华人主播| 偷拍国模大尺度视频在线播放| 日本亚洲最大的色成网站www| 国产日韩在线看| 亚洲影院中文字幕| 午夜一级在线看亚洲| 国产自摸综合网| 在线亚洲精品自拍| 久久99九九99精品| 日本一区免费看| japanesexxxxfree在线观看| 不卡一区二区在线| 日本久久高清视频| 黄色一级片视频| 国产精品二三区| 天天操天天爽天天射| av在线免费播放网站| 性欧美大战久久久久久久久| 欧美一级特黄aaa| 中国av在线播放| 精品国产电影一区| 在线免费观看污视频| 超碰在线99| 亚洲国产精品系列| 国产大片aaa| 蜜臀91精品国产高清在线观看| 久久频这里精品99香蕉| 人妻va精品va欧美va| 亚洲8888| 日韩成人网免费视频| 久久久久香蕉视频| 亚洲人成网77777色在线播放| 久久久久久久国产| 隣の若妻さん波多野结衣| 久久最新网址| 国产精品久久久久久久久久久久 | 欧美美女性生活视频| 精品一区二区三区中文字幕在线| 色妞色视频一区二区三区四区| 国产7777777| 草美女在线观看| 欧美一a一片一级一片| 伊人网在线视频观看| 日韩区一区二| 97高清免费视频| 久热免费视频| 99久久99久久综合| gai在线观看免费高清| 在线观看h网| 日韩成人高清在线| 亚洲天堂中文字幕在线| 99精品视频免费观看视频| 日本不卡一区| 国产在线视频网址| 91精品久久久久久久99蜜桃 | 在线视频专区| 在线观看成人免费视频| 午夜精品一区二区三区视频| 久久最新网址| 粉嫩av免费一区二区三区| 中文字幕在线免费视频| 国产成人丝袜美腿| 亚洲中文字幕久久精品无码喷水| 在线观看午夜看亚太视频| 欧美日韩性视频| 国产天堂av在线| 日韩欧美一区二区三区免费看| 国产精品一区二区免费| 在线观看视频网站你懂得| 91精品免费观看| 黄色一区二区视频| 免费观看在线综合色|