精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Android NFC開發實例:學生卡數據讀取

移動開發 Android
NFC功能現在越來越通用了,Google也為我們準備了詳細的NFC開發文檔,本文介紹了如何用Android NFC功能讀取學生卡,獲取里面的信息。

使用硬件:Google Nexus S,北京大學學生卡。(ps:筆者本想使用公交一卡通進行測試,發現手機不能正確識別)

手機操作系統:Android ICS 4.04。

開發時,筆者從Google Play Store上下載了NFC TagInfo軟件進行對比學習。所以我們可以使用任意一張能被TagInfo軟件正確識別的卡做測試。

在Android NFC 應用中,Android手機通常是作為通信中的發起者,也就是作為各種NFC卡的讀寫器。Android對NFC的支持主要在 android.nfc 和android.nfc.tech 兩個包中。

android.nfc 包中主要類如下:

NfcManager 可以用來管理Android設備中指出的所有NFCAdapter,但由于大部分Android設備只支持一個NFC Adapter,所以一般直接調用getDefaultAapater來獲取手機中的Adapter。

NfcAdapter 相當于一個NFC適配器,類似于電腦裝了網絡適配器才能上網,手機裝了NfcAdapter才能發起NFC通信。

 NDEF: NFC Data Exchange Format,即NFC數據交換格式。

NdefMessage 和NdefRecord NDEF 為NFC forum 定義的數據格式。

Tag 代表一個被動式Tag對象,可以代表一個標簽,卡片等。當Android設備檢測到一個Tag時,會創建一個Tag對象,將其放在Intent對象,然后發送到相應的Activity。

android.nfc.tech 中則定義了可以對Tag進行的讀寫操作的類,這些類按照其使用的技術類型可以分成不同的類如:NfcA, NfcB, NfcF,以及MifareClassic 等。其中MifareClassic比較常見。

在本次實例中,筆者使用北京大學學生卡進行數據讀取測試,學生卡的TAG類型為MifareClassic。

AndroidManifest.xml:

  1. <manifest xmlns:android="http://schemas.android.com/apk/res/android"   
  2.     package="org.reno"   
  3.     android:versionCode="1"   
  4.     android:versionName="1.0" >   
  5.     <uses-permission android:name="android.permission.NFC" />   
  6.     <uses-sdk android:minSdkVersion="14" />   
  7.     <uses-feature android:name="android.hardware.nfc" android:required="true" />   
  8.     <application   
  9.         android:icon="@drawable/ic_launcher"   
  10.         android:label="@string/app_name" >   
  11.         <activity   
  12.             android:name="org.reno.Beam"   
  13.             android:label="@string/app_name"   
  14.             android:launchMode="singleTop" >   
  15.             <intent-filter>   
  16.                 <action android:name="android.intent.action.MAIN" />   
  17.    
  18.                 <category android:name="android.intent.category.LAUNCHER" />   
  19.             </intent-filter>   
  20.             <intent-filter>   
  21.                 <action android:name="android.nfc.action.TECH_DISCOVERED" />   
  22.             </intent-filter>   
  23.             <meta-data   
  24.                 android:name="android.nfc.action.TECH_DISCOVERED"   
  25.                 android:resource="@xml/nfc_tech_filter" />   
  26.         </activity>   
  27.     </application>   
  28. </manifest>   

res/xml/nfc_tech_filter.xml:

  1. <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> 
  2.     <tech-list> 
  3.        <tech>android.nfc.tech.MifareClassic</tech> 
  4.     </tech-list> 
  5. </resources> 

當手機開啟了NFC,并且檢測到一個TAG后,TAG分發系統會自動創建一個封裝了NFC TAG信息的intent。如果多于一個應用程序能夠處理這個intent的話,那么手機就會彈出一個框,讓用戶選擇處理該TAG的Activity。 TAG分發系統定義了3中intent。按優先級從高到低排列為:

NDEF_DISCOVERED, TECH_DISCOVERED, TAG_DISCOVERED

當Android設備檢測到有NFC Tag靠近時,會根據Action申明的順序給對應的Activity 發送含NFC消息的 Intent。

此處我們使用的intent-filter的Action類型為TECH_DISCOVERED從而可以處理所有類型為ACTION_TECH_DISCOVERED并且使用的技術為nfc_tech_filter.xml文件中定義的類型的TAG。

詳情可查看官方文檔說明。下圖為當手機檢測到一個TAG時,啟用Activity的匹配過程。

res/layout/main.xml:

  1. <?xml version="1.0" encoding="utf-8"?>   
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"   
  3.     android:layout_width="fill_parent"   
  4.     android:layout_height="fill_parent"   
  5.     android:orientation="vertical" >   
  6.    
  7.     <ScrollView   
  8.         android:id="@+id/scrollView"   
  9.         android:layout_width="fill_parent"   
  10.         android:layout_height="fill_parent"   
  11.         android:background="@android:drawable/edit_text" >   
  12.    
  13.         <TextView   
  14.             android:id="@+id/promt"   
  15.             android:layout_width="fill_parent"   
  16.             android:layout_height="wrap_content"   
  17.             android:scrollbars="vertical"   
  18.             android:singleLine="false"   
  19.             android:text="@string/info" />   
  20.     </ScrollView>   
  21.    
  22. </LinearLayout>   

定義了Activity的布局:只有一個帶有滾動條的TextView用于顯示從TAG中讀取的信息。

res/values/strings.xml:

  1. <?xml version="1.0" encoding="utf-8"?>   
  2. <resources>   
  3.     <string name="app_name">NFC測試</string>   
  4.     <string name="info">掃描中。。。</string>   
  5. </resources>   

src/org/reno/Beam.java:

  1. package org.reno;   
  2.    
  3. import android.app.Activity;   
  4. import android.content.Intent;   
  5. import android.nfc.NfcAdapter;   
  6. import android.nfc.Tag;   
  7. import android.nfc.tech.MifareClassic;   
  8. import android.os.Bundle;   
  9. import android.widget.TextView;   
  10.    
  11. public class Beam extends Activity {   
  12.     NfcAdapter nfcAdapter;   
  13.     TextView promt;   
  14.     @Override   
  15.     public void onCreate(Bundle savedInstanceState) {   
  16.         super.onCreate(savedInstanceState);   
  17.         setContentView(R.layout.main);   
  18.         promt = (TextView) findViewById(R.id.promt);   
  19.         // 獲取默認的NFC控制器   
  20.         nfcAdapter = NfcAdapter.getDefaultAdapter(this);   
  21.         if (nfcAdapter == null) {   
  22.             promt.setText("設備不支持NFC!");   
  23.             finish();   
  24.             return;   
  25.         }   
  26.         if (!nfcAdapter.isEnabled()) {   
  27.             promt.setText("請在系統設置中先啟用NFC功能!");   
  28.             finish();   
  29.             return;   
  30.         }   
  31.     }   
  32.    
  33.     @Override   
  34.     protected void onResume() {   
  35.         super.onResume();   
  36.         //得到是否檢測到ACTION_TECH_DISCOVERED觸發   
  37.         if (NfcAdapter.ACTION_TECH_DISCOVERED.equals(getIntent().getAction())) {   
  38.             //處理該intent   
  39.             processIntent(getIntent());   
  40.         }   
  41.     }   
  42.     //字符序列轉換為16進制字符串   
  43.     private String bytesToHexString(byte[] src) {   
  44.         StringBuilder stringBuilder = new StringBuilder("0x");   
  45.         if (src == null || src.length <= 0) {   
  46.             return null;   
  47.         }   
  48.         char[] buffer = new char[2];   
  49.         for (int i = 0; i < src.length; i++) {   
  50.             buffer[0] = Character.forDigit((src[i] >>> 4) & 0x0F16);   
  51.             buffer[1] = Character.forDigit(src[i] & 0x0F16);   
  52.             System.out.println(buffer);   
  53.             stringBuilder.append(buffer);   
  54.         }   
  55.         return stringBuilder.toString();   
  56.     }   
  57.    
  58.     /**  
  59.      * Parses the NDEF Message from the intent and prints to the TextView  
  60.      */   
  61.     private void processIntent(Intent intent) {   
  62.         //取出封裝在intent中的TAG   
  63.         Tag tagFromIntent = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);   
  64.         for (String tech : tagFromIntent.getTechList()) {   
  65.             System.out.println(tech);   
  66.         }   
  67.         boolean auth = false;   
  68.         //讀取TAG   
  69.         MifareClassic mfc = MifareClassic.get(tagFromIntent);   
  70.         try {   
  71.             String metaInfo = "";   
  72.             //Enable I/O operations to the tag from this TagTechnology object.   
  73.             mfc.connect();   
  74.             int type = mfc.getType();//獲取TAG的類型   
  75.             int sectorCount = mfc.getSectorCount();//獲取TAG中包含的扇區數   
  76.             String typeS = "";   
  77.             switch (type) {   
  78.             case MifareClassic.TYPE_CLASSIC:   
  79.                 typeS = "TYPE_CLASSIC";   
  80.                 break;   
  81.             case MifareClassic.TYPE_PLUS:   
  82.                 typeS = "TYPE_PLUS";   
  83.                 break;   
  84.             case MifareClassic.TYPE_PRO:   
  85.                 typeS = "TYPE_PRO";   
  86.                 break;   
  87.             case MifareClassic.TYPE_UNKNOWN:   
  88.                 typeS = "TYPE_UNKNOWN";   
  89.                 break;   
  90.             }   
  91.             metaInfo += "卡片類型:" + typeS + "\n共" + sectorCount + "個扇區\n共"   
  92.                     + mfc.getBlockCount() + "個塊\n存儲空間: " + mfc.getSize() + "B\n";   
  93.             for (int j = 0; j < sectorCount; j++) {   
  94.                 //Authenticate a sector with key A.   
  95.                 auth = mfc.authenticateSectorWithKeyA(j,   
  96.                         MifareClassic.KEY_DEFAULT);   
  97.                 int bCount;   
  98.                 int bIndex;   
  99.                 if (auth) {   
  100.                     metaInfo += "Sector " + j + ":驗證成功\n";   
  101.                     // 讀取扇區中的塊   
  102.                     bCount = mfc.getBlockCountInSector(j);   
  103.                     bIndex = mfc.sectorToBlock(j);   
  104.                     for (int i = 0; i < bCount; i++) {   
  105.                         byte[] data = mfc.readBlock(bIndex);   
  106.                         metaInfo += "Block " + bIndex + " : "   
  107.                                 + bytesToHexString(data) + "\n";   
  108.                         bIndex++;   
  109.                     }   
  110.                 } else {   
  111.                     metaInfo += "Sector " + j + ":驗證失敗\n";   
  112.                 }   
  113.             }   
  114.             promt.setText(metaInfo);   
  115.         } catch (Exception e) {   
  116.             e.printStackTrace();   
  117.         }   
  118.     }   
  119. }   

關于MifareClassic卡的背景介紹:數據分為16個區(Sector) ,每個區有4個塊(Block) ,每個塊可以存放16字節的數據。

每個區***一個塊稱為Trailer ,主要用來存放讀寫該區Block數據的Key ,可以有A,B兩個Key,每個Key 長度為6個字節,缺省的Key值一般為全FF或是0. 由 MifareClassic.KEY_DEFAULT 定義。

因此讀寫Mifare Tag 首先需要有正確的Key值(起到保護的作用),如果鑒權成功,然后才可以讀寫該區數據。

執行效果:

責任編輯:徐川 來源: cnblogs
相關推薦

2013-01-23 14:33:04

Android開發NFC

2023-12-22 09:11:45

AndroidNFC移動開發

2013-01-23 14:42:26

Android開發NFC

2011-09-07 17:54:40

Android Wid開發

2013-02-20 15:29:00

JSONAndroid開發

2015-02-26 14:17:45

2009-04-02 15:58:12

AndroidEclipseSqlite

2014-08-26 11:46:46

QtAndroid實例教程

2011-04-12 08:40:23

IMFAndroid

2011-09-08 13:11:07

Android Wid實例

2013-05-20 15:42:22

2010-11-19 11:44:16

oracle utl_

2013-05-23 14:50:18

2009-12-16 10:41:47

Android日程表

2013-05-21 11:26:49

Android游戲開發Sensor感應

2013-01-31 10:28:40

NFC移動支付近場通信

2015-05-05 10:08:15

Android谷歌Sky

2011-12-27 20:16:11

Siri

2010-09-14 09:04:03

Android

2013-05-21 09:56:15

點贊
收藏

51CTO技術棧公眾號

欧美性suv| 中文字幕国产在线观看| 欧美a在线观看| 亚洲猫色日本管| 国产精品yjizz| 久久9999久久免费精品国产| 精品三级av在线导航| 日本道色综合久久| 五月天综合婷婷| 精品国产www| 一本到12不卡视频在线dvd| 欧美www视频| 日韩在线综合网| jizz在线观看中文| 狠狠色综合色综合网络| 久久天天躁夜夜躁狠狠躁2022| 久久久久久久久久久影视| 啊啊啊久久久| 欧美韩日一区二区三区| 51精品国产人成在线观看| 久久夜靖品2区| 精品国产123区| 欧美一区二区黄| 国产l精品国产亚洲区久久| 人妻一区二区三区四区| 日韩av电影天堂| 欧美成人一区二区三区电影| 免费在线观看成年人视频| 成人私拍视频| 亚洲一区在线观看免费观看电影高清| 久久99精品久久久久久久青青日本| 黄色一区二区视频| 在线观看一区| 日韩中文字幕网址| 国产麻豆天美果冻无码视频| 日本国产亚洲| 欧美日韩中文字幕综合视频| 亚洲精美视频| 亚洲 另类 春色 国产| 美女视频黄 久久| 97视频在线观看视频免费视频 | 免费看男男www网站入口在线| 免费看精品久久片| 51久久精品夜色国产麻豆| 黄色香蕉视频在线观看| 亚洲资源网你懂的| 日韩精品一区二区三区在线播放 | 欧美视频一区| 日韩中文字幕在线观看| 91精品人妻一区二区三区蜜桃欧美| 国产精区一区二区| 欧美亚洲尤物久久| 国产精品沙发午睡系列| 国产区美女在线| 亚洲欧洲av另类| 亚洲精品成人久久久998| 午夜视频www| 成人av网址在线观看| 69堂成人精品视频免费| 国产精品国产一区二区三区四区 | 久久的精品视频| 天天操天天舔天天射| 日韩欧美影院| 日韩视频免费观看高清完整版 | 日本另类视频| 一本在线高清不卡dvd| 日本a视频在线观看| 欧美精品videossex少妇| 亚洲人精品一区| 国产精品亚洲天堂| av在线免费网站| 亚洲视频免费观看| 成人在线免费观看网址| 精品欧美色视频网站在线观看| 国产精品久久毛片av大全日韩| 欧美日韩一区二区三| 青青草在线视频免费观看| 99久久精品国产毛片| 精品欧美一区二区三区久久久| 婷婷综合激情网| 久久综合色播五月| 欧美日韩国产精品一卡| 精品视频二区| 国产精品久久久久精k8| 在线视频不卡一区二区| 91在线直播| 亚洲色图视频免费播放| 日韩一级免费看| cao在线视频| 懂色av一区二区三区| 农村妇女精品一二区| caoporn视频在线观看| 色综合久久综合| 激情五月俺来也| 91精品国产色综合久久不卡粉嫩| 日韩一区二区三区电影在线观看| 乳色吐息在线观看| youjizz亚洲| 日韩精品免费看| 永久免费毛片在线观看| 久久在线视频免费观看| 超碰精品一区二区三区乱码| 日韩欧美激情视频| 久久在线精品| 成人网在线观看| 色网站免费观看| 久久久久久**毛片大全| 中文网丁香综合网| 伊人福利在线| 日韩欧美亚洲成人| 精品人妻一区二区三区免费| 国产suv精品一区二区四区视频| 亚洲欧美在线磁力| 老熟妇高潮一区二区三区| 欧美视频一区| 国产精品视频一区二区高潮| 成人久久精品人妻一区二区三区| av中文字幕一区| 亚洲一区二区三区涩| av中文资源在线资源免费观看| 在线观看日韩电影| 风韵丰满熟妇啪啪区老熟熟女| 欧美18免费视频| 日韩一中文字幕| 日本中文在线播放| 国内不卡的二区三区中文字幕 | 久久精品亚洲乱码伦伦中文| 草草草视频在线观看| 欧美电影网站| 精品国产不卡一区二区三区| 毛片视频免费播放| 亚洲精品偷拍| 亚洲自拍偷拍福利| 国产一级在线观看| 亚洲高清在线视频| 一级黄色片国产| 国产欧美日韩精品一区二区三区 | 午夜视频福利在线| 国产精品久久久久三级| 国产乱子伦农村叉叉叉| 婷婷视频一区二区三区| 综合网中文字幕| 欧美日韩乱国产| 成人免费高清视频在线观看| 日韩国产在线一区| 日本高清在线观看| 欧美精品第一页| 手机看片福利视频| 久久久久看片| 久久精品国产理论片免费| 在线看福利影| 欧美一区二区在线不卡| 少妇高潮在线观看| 日本在线不卡视频| 日韩国产在线一区| av一区在线| 国产亚洲a∨片在线观看| 亚洲欧美综合自拍| 91亚洲国产成人精品一区二三 | 亚洲国产成人av| 黑人性生活视频| 欧美在线影院| 91久久国产综合久久蜜月精品| 久久五月精品| 91精品国产综合久久久久久漫画| 国产精品久久国产精麻豆96堂| 日韩成人免费电影| 欧美亚洲国产免费| 日韩av首页| 尤物yw午夜国产精品视频明星| 亚洲高清视频免费观看| 国产日韩欧美不卡在线| 男人插女人下面免费视频| 成人影视亚洲图片在线| 国产精品网红福利| 9191在线| 精品欧美一区二区三区精品久久 | 88在线观看91蜜桃国自产| 麻豆一区产品精品蜜桃的特点| 99久久伊人精品| 又色又爽又高潮免费视频国产| 99精品小视频| 国产精品一区二区免费| 成人性生交大片免费观看网站| 中文字幕在线国产精品| 亚洲精品一区二区三区不卡| 日韩欧美在线中文字幕| 久久噜噜色综合一区二区| 成人高清视频免费观看| 999精品视频在线| 午夜国产精品视频免费体验区| 久久精品国产精品国产精品污| 国产精品久久乐| 91精品国产高清自在线| freemovies性欧美| 精品美女一区二区三区| www.久久网| 婷婷一区二区三区| 伊人在线视频观看| 91论坛在线播放| 男人添女人荫蒂国产| 日韩精品一卡二卡三卡四卡无卡| 好吊色视频988gao在线观看| 美女久久久久| 国产精品国产一区二区| 久久av日韩| 秋霞午夜一区二区| 久草在线视频福利| 日韩在线观看av| 成人va天堂| 欧美日本一道本在线视频| 精品在线视频免费| 国产精品久久二区二区| 国产精品无码在线| 国产在线看一区| 男女无套免费视频网站动漫| av成人天堂| 国产爆乳无码一区二区麻豆| 欧美一区2区| 蜜桃视频日韩| aaa国产精品视频| 91久久久久久久久久久| 精品网站在线| 国产999精品久久久影片官网| brazzers在线观看| 欧美日韩成人在线播放| 免费超碰在线| 上原亚衣av一区二区三区| 男人久久精品| 日韩成人久久久| 欧美视频xxx| 日韩欧美在线观看一区二区三区| 又骚又黄的视频| 欧美性视频一区二区三区| 毛片基地在线观看| 欧美日韩中文字幕在线视频| 日本一区二区三区四区五区| 亚洲主播在线观看| 午夜免费激情视频| 亚洲欧美另类图片小说| 国产麻豆a毛片| 中文字幕一区av| 色偷偷男人天堂| 国产精品国产三级国产aⅴ入口| av网在线播放| 国产精品丝袜久久久久久app| 精品人伦一区二区三电影| 国产婷婷色一区二区三区| 妺妺窝人体色WWW精品| 国产亚洲1区2区3区| 亚洲精品一区二区三区影院忠贞| 国产日产欧美一区二区视频| 国产精品天天干| 中文字幕第一页久久| 五月天婷婷丁香网| 最近日韩中文字幕| 91嫩草丨国产丨精品| 亚洲免费视频中文字幕| 免看一级a毛片一片成人不卡| 亚洲超碰97人人做人人爱| www.日本精品| 欧美伊人久久久久久久久影院| 亚洲天堂自拍偷拍| 日韩一本二本av| 深爱激情五月婷婷| 亚洲男人的天堂在线播放| 风间由美一区| 久热精品视频在线观看一区| 美女日批视频在线观看| 91av在线看| 成人在线高清| 999日本视频| 天堂一区二区三区四区| 日韩美女一区| 夜间精品视频| 欧美v在线观看| 日韩av一区二区在线影视| 天天操夜夜操很很操| 不卡的av中国片| 欧美福利第一页| 伊人性伊人情综合网| av大片免费在线观看| 欧美日本视频在线| 人妻va精品va欧美va| 亚洲一区二区国产| 午夜小视频在线观看| 热久久这里只有| 精品三级国产| 欧美日韩一区在线播放 | 日韩国产精品一区| 亚洲s色大片| 97香蕉久久超级碰碰高清版 | 欧美日韩中文字幕一区| 国内毛片毛片毛片毛片| 亚洲色图欧美制服丝袜另类第一页| 国产网站在线免费观看| 69影院欧美专区视频| 中文字幕成人| 欧美一级片免费观看| 欧美日韩综合| 欧美自拍小视频| 成人h版在线观看| 午夜精品一区二区三级视频| 精品成人av一区| 99久久精品国产一区色| 亚洲欧美国产精品专区久久| 欧美videosex性欧美黑吊| 国产精品自产拍在线观| 蜜臀91精品国产高清在线观看| 欧美 国产 精品| 日本91福利区| 无码人妻aⅴ一区二区三区| 一区二区三区免费在线观看| 国产精品xxxxxx| 日韩精品在线视频观看| 欧美理论片在线播放| 国产一区视频在线播放| 女人av一区| 久色视频在线播放| 岛国av在线一区| 顶臀精品视频www| 精品婷婷伊人一区三区三| 蜜桃视频在线观看视频| 国产91|九色| 欧美电影完整版在线观看| 永久免费看av| 国产一区免费电影| 亚洲精品久久久久久国| 欧美三片在线视频观看| 欧美女v视频| 91av在线免费观看| 亚洲精品亚洲人成在线| 欧美 丝袜 自拍 制服 另类 | 亚洲av毛片基地| 一本大道av伊人久久综合| 亚洲aaaaaaa| 91国产在线精品| 久久99精品国产自在现线| 久无码久无码av无码| 国产+成+人+亚洲欧洲自线| 久久久久亚洲av无码专区体验| 91精品在线免费观看| 色老头视频在线观看| 国产视频999| 五月精品视频| 青娱乐精品在线| 亚洲国产裸拍裸体视频在线观看乱了 | 日韩欧美国产一区二区在线播放| gogo在线高清视频| 亚洲最大的av网站| 欧美精品啪啪| 国内精品免费视频| 欧美日韩午夜视频在线观看| 三级在线视频| 国产成人中文字幕| 成人aaaa| 手机在线播放av| 亚洲一区视频在线| 四虎国产精品永远| 国产精品久久久久久久久借妻| 欧美freesextv| 日韩精品视频网址| 亚洲国产精品人人做人人爽| 天天射天天操天天干| 国产精品久在线观看| 99re6这里只有精品| 女人高潮一级片| 亚洲一二三区在线观看| 深夜影院在线观看| 国产精品中文字幕久久久| 欧美二区视频| 熟女人妻在线视频| 欧美日韩在线电影| 一二三四区在线观看| 精品欧美日韩在线| 捆绑调教一区二区三区| 国产精品999久久久| 亚洲欧美国产精品va在线观看| 亚洲日韩中文字幕一区| 69sex久久精品国产麻豆| 久久久久国产精品人| 国产精品国产一区二区三区四区 | 亚洲国产精品午夜在线观看| 精品亚洲一区二区三区四区五区| 国产资源一区| 国产欧美日韩小视频| 国产午夜亚洲精品不卡| 国产三级漂亮女教师| 欧美一级在线亚洲天堂| 97精品国产一区二区三区| 奇米777第四色| 欧美日韩mp4| 成人美女视频| 六月婷婷激情综合| 国产精品国产成人国产三级 | 在线播放国产一区二区三区| 精品99re| 日本人69视频| 岛国av一区二区三区| 在线观看h网|