久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

Android錄音MediaRecorderAudioRecorder相關總結

時間:2019-05-13 19:14:24下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關的《Android錄音MediaRecorderAudioRecorder相關總結》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《Android錄音MediaRecorderAudioRecorder相關總結》。

第一篇:Android錄音MediaRecorderAudioRecorder相關總結

Android錄音MediaRecorderAudioRecorder相關總結

這學期,筆者在制作一款Android音樂應用中需要用到錄音功能,將MediaRecorder與AudioRecorder總結如下,如有紕誤,望包涵并糾正。

一、MediaRecorder使用MediaRecorder進行聲音錄制簡單方便,不需要理會中間錄制過程。結束錄制后可以直接得到音頻文件進行播放。由于MediaRecorder較為簡單,就不詳細介紹,各位看官可自行搜索并試驗??蓞⒖既缦虏┛停篈ndroid MediaRecorder錄制音頻:http://aina-hk55hk.iteye.com/blog/706793Andriod MediaRecorder小結:http://Android MediaRecorder框架介紹:http://forest606.blog.163.com/blog/static/***102834914/

二、AudioRecorder在聲音錄制過程中,有可能我們需要得到采集的聲音數據并進行處理,比如降噪,合成等。MediaRecorder明顯不能符合要求。而AudioRecorder恰能滿足這種要求。過程為一段一段進行錄制然后得到數據分別進行處理。AudioRecorder可以有2種處理方式:

1.設置AudioRecorder的UpdateListener和NotificationPeriod [java] view plaincopyaudioRecorder.setRecordPositionUpdateListener(updateListener);

audioRecorder.setPositionNotificationPeriod(framePeriod);

然后在UpdateListener中進行處理。2.另外開啟一線程得到錄制數據然后進行處理第一種方式簡單明了,是在主線程中處理,可以很方便的進行其他操作,如更新UI。但實際使用過程中發現,即使沒有進行其他操作也會造成程序崩潰,所以不推薦使用。

第二種方式較為麻煩,特別是需要在子線程中更新UI。但是效果很好。2種方式示例代碼如下:1.UpdateListener[java] view plaincopyprivate AudioRecord.OnRecordPositionUpdateListener updateListener = new AudioRecord.OnRecordPositionUpdateListener()

{

private int x = 0;

public void onPeriodicNotification(AudioRecord recorder)

{

audioRecorder.read(buffer, 0, buffer.length);// Fill buffer

try

{

//randomAccessWriter.write(buffer);// Write buffer to file

//payloadSize += buffer.length;

if(bSamples == 16)

{

for(int i=0;i

{ // 16bit sample size

short curSample = ExtAudioRecorder.this.getShort(buffer[2*i], buffer[2*i+1]);

if(curSample > cAmplitude)

{ // Check amplitude

cAmplitude = curSample;

}

}

}

else

{ // 8bit sample size

for(int i=0;i

{

if(buffer[i] > cAmplitude)

{ // Check amplitude

cAmplitude = buffer[i];

}

}

}

}

catch(Exception e)

{

Log.e(ExtAudioRecorder.class.getName(), “Error occured in updateListener, recording is aborted”);

//stop();

}

if(x%4 == 0)

{

mDrawingView.getEditingLayer().addSquare(x/4, 19(int)((cAmplitude/65535.0f)*19)));

messageHandler.sendMessage(message);

}

}

}

第二篇:Android總結

Android四大組件:

Activity—表現屏幕界面

Service—后臺服務

BroadcastReceiver—實現廣播機制

ContentProvider—實現數據存儲

Intent類:用來啟動程序并傳遞信息的類

用于Activity、Receiver、Service之間進行交互的類,通過無參構造方法創建對象,增加其action、category、data、extra等屬性進行信息傳遞,并通過Activity中的startActivity(Intent intent)進行界面的跳轉;通過Context中的StartService(Intent intent)進行服務跳轉;通過Context中的registerReceive(Intent intent)對廣播進行注冊,并通過sendBroadcast()進行無序消息發送,或可以通過SendOrderedBroadcast()進行有序的消息發送。Handler類:

用來發送和處理消息,并配合主線程完成UI的更新;消息Message/Runnable傳遞通過MessageQueue(消息隊列,先進先出)進行傳遞,并通過Lopper進行接收,傳遞的消息可以為Message對象,也可以是Runnable對象;接收方法通過HandleMessage(Message msg)進行獲取。SharedPreferences類:

一般用于第一次登錄時的設置,或者是各個界面的一些小型格式設置,如字體等。是本地的小型共享數據庫,可以通過Context的靜態方法getSharedPreferences獲得其對象,對象內的值均為鍵值對進行儲存。通過SharedPreferences對象調用editor()獲取SharedPreferences.Editor對象,向共享數據庫中增加數據,putString(),并提交數據,commit();通過SharedPreferences對象獲取共享數據庫中的數據,getString()。

ViewPager:實現界面滑動的類;

通過設置OnPagerChangedListener設置ViewPager的監聽事件;

實現流程:

①布局文件中設置ViewPager控件;

②代碼中進行綁定控件;

③通過繼承PagerAdapter抽象類進行設置適配器,并傳遞數據源;

④適配器中實現兩個抽象方法,兩個重寫方法:getCount()—獲取滑動界面的數量,isViewFromObject()—判斷視圖是否是來自于Object文件中;重寫兩個方法,分別為destoryItem—銷毀指定位置的視圖;InstantiateItem(),設置指定位置的視圖;

Timer與TimerTask類:

Timer為計時器的類,通過無參構造方法可以獲取對象,通過Timer.schedule(TimerTask task,long time)進行設置多久后執行某任務,當任務執行完后,取消計時的功能,Timer.cancle();TimerTask類為抽象類,實例化時,必須重寫run方法;執行的內容,均在run方法中進行設置,并且執行時,已在子線程中進行執行。自定義View:用到的類有Paint、Canvas、Spec、SpecF、Path、View.MeasureSpec、Timer、TimerTask;

抽象類,通過子類繼承,獲取對象;在布局文件中綁定后,通過代碼,設置自定義View的屬性;自定義View中,通過重寫OnMeasure方法,對布局文件中的尺寸進行測量,并由View中的setMeasureDimenson()方法,進行數據的保存;通過重寫Ondraw方法,進行繪圖;當需要繪制動態圖形時,使用計時器Timer的schedule(TimerTask,long time,delay time2)方法,在time時間后,每隔time2時間,重寫執行run方法中的內容;將耗時的操作設置在run方法中,并通過View中的invalidate()方法刷新主線程中的繪的圖形,通過postInvalidate()刷新子線程中的圖形。數據庫:

常用的數據庫有Oracle,需要安裝和配置的大型收費數據庫;MySQL是中型數據庫,同樣需要安裝配置,但不需要收費;Sqlite是小型免費的嵌入式數據庫,占用內存低,最新版本為3.0。Sqlite數據庫需要通過SqliteDatabaseOpenHelper進行創建數據庫,并通過SqliteDatabase進行數據庫的操作。輔助類是抽象類,通過繼承,重寫兩個方法,并在子類的構造方法中通過OpenHelper的構造方法(Context context,String SqlName,SqliteDatabase.CursorFactory factory,int version)進行數據庫的創建,在onCreate方法中,進行數據庫表的創建,在onUpdate中進行數據庫的版本更新。在數據庫的操作類中,執行exect方法,通過sql語句對數據庫進行操作。Create table student(_id integer primary key auto increament ,name text);insert into student(_id,name)values(1,zx);delete from student where _id=1;update student set _id=2 where name=zx;select *from student;ListView、GridView適配器的優化:

將布局文件中的控件進行封裝,當視圖加載時,判斷可變視圖是否存在,當不存在時,通過布局文件獲取視圖,并新建封裝類,將地址通過setTag()進行發送;當視圖存在時,重復利用地址—getTag()。反射:

存儲數據的方式:

共享數據庫、數據庫、文件、網絡、內容提供者

廣播:

廣播傳播時,需要接收者、發送者、廣播頻道;根據發送者的發送方式不同,分為有序廣播、無序廣播;有序廣播為接收者有接收順序,根據設置的優先級不同,確定先后順序,接收者同時也是發送者,向后面的廣播發送消息,發送過程中,可以添加信息,也可以停止廣播的傳輸;無序廣播,接收者之間無聯系,均從發送者處接收信息;廣播在傳輸過程中,不能被添加信息,也不可能被停止。廣播在發送前,需要對接收者進行注冊,注冊方式有兩種,動態注冊、靜態注冊。動態注冊,是在代碼中進行,通過Context對象調用靜態方法進行注冊,所有的廣播均可以用動態注冊,其生命周期依賴于應用,相對于靜態注冊,比較節省內存;靜態方法在清單文件中進行注冊,部分系統廣播不能通過靜態注冊進行,其生命周期依賴于系統,當系統啟動,即運行接收廣播,較耗內存。廣播接收者需要繼承BroadcastReceiver,并實現抽象方法onReceive(),通過回調接口,進行數據的傳輸。注意:廣播發送前,必須進行接收者的注冊,并且,當顯示跳轉時,不需要意圖過濾器。安卓布局:九種布局

線性布局,水平或垂直方向兩種格式,主要特點為權重,即規定各控件在視圖中的占有的比例;

相對布局,相對于父控件或兄弟控件的布局,各控件需指定相對位置; 絕對布局,指定各控件在視圖中的絕對位置,幾乎不再使用; 表格布局,子布局放在行中,列由控件表示(TableRow); 幀布局:覆蓋前面布局的布局,一般用于暫停按鈕等; 風格布局:可以跨行、跨列的布局,占滿換行;

左右側滑:可以實現左右側滑,通過設置主菜單和二級菜單設置左右兩個菜單; 下拉刷新:設置下拉刷新、上拉加載的功能; 抽屜布局;

安卓版本及對應的API:

1.6—4;2—7;3—11;4—15;4.3—18;5—20;5.1—21;6—23;7—25; 安卓四層架構:

應用層:Java語言開發,主要從事App開發;

運行庫層:Java語言與C語言,View視圖、管理類等的開發; 架構層:C語言與Linux語言,各種框架、瀏覽器等; 內核層:Linux、C語言,開發各種驅動; 安卓四大組件:

Activity:界面,實現程序與用戶之間的交換,有自己的生命周期,七個生命周期;4種啟動模式 Service:

BroadcastReceive:三要素,發送者、接收者、發送頻道(Intent);類型:有序(接收有序,有數據傳送,可以攔截數據)、無序廣播(相對);注冊方式:靜態注冊,持久監聽,占用內存比較高生命周期跟隨系統,動態注冊(代碼中),所有廣播都可以動態注冊,部分系統廣播不能動態注冊,臨時監聽,占用內存較少,生命周期隨應用進行;

ContentProvide:不能存放數據,五種存放數據方式之一,特點為:①為數據的獲取等操作添加一個統一的接口②可以實現跨應用訪問數據;③可以實現Android中通訊錄、消息、音頻、視頻等的訪問或操作;通過ContentReceive進行數據的訪問,可以對數據進行增刪改查操作。

動畫: IO流: 序列化: AlertDialog:

Set實現類: 手機電量檢測:

自定義SurfaceView:

自定義View:三個構造方法的區別

Message:Handler.obtain/new/Message.obtain

HttpUriConnection訪問網絡

gride 異步任務 動畫

抽象類和接口 反射 克隆 序列化 側滑的實現 數據庫 Socket:

Gson解析

異步任務和子線程區別 WebView 版本更新 照片的圓角化

Collection與Collections Sql語句

MVP框架與MVC: TCP與UDP的區別: 一鍵分享的流程: Http協議的理解: 不使用框架訪問網絡: List集合與set集合: 自定義View的流程: 線性布局的特點: ViewPager的原理: 服務的啟動方式:

Activity的啟動方式: Xml數據解析:

第三篇:Android WebView總結

Android WebView總結

1、添加權限:AndroidManifest.xml中必須使用許可“Android.permission.INTERNET”,否則會出web page not available錯誤。

2、在要Activity中生成一個WebView組件:WebView webView = new WebView(this);

3、設置WebView基本信息:

如果訪問的頁面中有Javascript,則webview必須設置支持Javascript。

webview.getSettings().setJavaScriptEnabled(true);

觸摸焦點起作用

requestFocus();

取消滾動條

this.setScrollBarStyle(SCROLLBARS_OUTSIDE_OVERLAY);

4、設置WevView要顯示的網頁:

互聯網用:webView.loadUrl("");本地文件存放在:assets文件中

5、如果希望點擊鏈接由自己處理,而不是新開Android的系統browser中響應該鏈接。給WebView添加一個事件監聽對象(WebViewClient)

并重寫其中的一些方法

shouldOverrideUrlLoading:對網頁中超鏈接按鈕的響應。

當按下某個連接時WebViewClient會調用這個方法,并傳遞參數:按下的url

onLoadResource

onPageStart

onPageFinish

onReceiveError

onReceivedHttpAuthRequest6、如果用webview點鏈接看了很多頁以后,如果不做任何處理,點擊系統“Back”鍵,整個瀏覽器會調用finish()而結束自身,如果希望瀏覽的網頁回退而不是退出瀏覽器,需要在當前Activity中處理并消費掉該Back事件。

覆蓋Activity類的onKeyDown(int keyCoder,KeyEvent event)方法。

public boolean onKeyDown(int keyCoder,KeyEvent event){

if(webView.canGoBack()&& keyCoder == KeyEvent.KEYCODE_BACK){

webview.goBack();//goBack()表示返回webView的上一頁面

return true;

}

return false;

}

第四篇:Android 課程總結

一、Android開發環境的搭建。

1、Android SDK的安裝;

2、ADT的安裝和配置;

3、Android 模擬器的配置。

二、編寫第一個Android程序───Hello World(1學時)

1、創建一個Android應用程序的步驟;

2、Android 應用程序目錄結構;

3、AndroidManidest.xml文件的作用;

4、Android相關資源文件的作用。

三、Activity及Activity和Intent(2學時)

1、Activity的主要作用;

2、創建一個Activity的方法;

3、在AndroidManifest.xml文件中的注冊應用Activity的方法;

4、在Activity中添加控件的方法;

5、多個Activity之間的切換;

6、Intent的基本作用;

7、在一個Activity中啟動另一個Activity的方法;

8、使用Intent在Activity中傳遞數據的基本方法。

四、常見控件的使用方法(基礎)

1、TextView的使用方法;

2、EditText的使用方法;

3、Button的使用方法;

4、Menu的使用方法。

五、Activity的生命周期(2學時)

1、Activity的七個周期:

① OnCreate();② OnDestroy();③ OnPause();④ OnRestart();⑤ OnResume();⑥ OnStart();⑦ OnStop();

2、Task的基本概念;

3、Activity和Task之間的關系;

4、對話框風格的Activity的使用方法。

六、Activity的布局(3學時)

1、LinearLayout的使用方法;

2、TableLayout的使用方法;

3、LinearLayout和TableLayout的嵌套使用;

4、RelativeLayout的使用方法(重點、難點)

七、常用控件是使用方法二(2學時)

1、RadioGroup和RadioButton的使用方法;

2、CheckBox的使用方法;

3、Toast的基本用法。

4、ProgressBar的使用方法;

5、ListView的用法。

八、Handler的使用方法(2學時)

1、Handler的基本概念;

2、Handler的基本用法;

3、使用Handler更新ProgressBar

4、Handler與線程;

5、Bundle的用法;

6、在新線程中處理消息的方法。

九、SQLite使用方法

1、SQLite介紹;

2、SQLiteOpenHeper使用方法;

3、使用adb訪問SQLite

4、增、刪、改、查。

十、Android文件下載

1、使用HTTP協議下載文件;

2、將下載的文件寫入SDCARD。

十一、Content Provider初步(2學時)

1、Content Provider的基本概念;

2、Uri;

3、Content Provider的實現方法。

十二、XML文件的解析方法

1、什么是SAX;

2、SAX的基本原理;

3、SAX常用接口;

4、SAX解析。

十三、廣播機制(2學時)

1、Android的廣播機制(圖鑒);

2、BroadCastReceive的作用;

3、BroadCastReceive的編寫方法;

4、BroadCastReceive的生命周期。

5、注冊BroadCastReceive的方法;

6、Android內置BroadCastReceive Actions。

十四、WIFI網絡的使用

1、什么是WIFI;

2、獲取WIFI網卡的狀態;

3、操作WIFI所需要的權限;

4、改變WIFI網卡的狀態。

十五、Socket編程

1、什么是Socket;

2、Socket基本通信模型(見圖);

3、使用基于TCP協議的Socket;

4、使用基于UDP協議的Socket。

十六、Service

1、Service是什么;

2、Service不是什么;

3、Service的生命周期;

4、啟動和停止Service;

第五篇:Android方案總結

一、硬件描述

如上圖,應用程序的開發過程中我們使用了飛思卡爾的i.MX51 EVK Hardware。設備提供的支持如下:多標準音頻回放;多標準視頻回放;開放的系統支持;

二、軟體結構

1、Android系統的初始化流程圖如下所示:

BeginMkdir: /dev,/proc,/sys,/dev/pts,/dev/socketaction_for_each_trigger(“early-init”, action_add_queue_tail);property_set(ro.XXX)open_devnull_stdio():fd is 0,1,2device_initaction_for_each_trigger(“init”, action_add_queue_tail)log_init: /dev/__kmsg__property_initaction_for_each_trigger(“early-boot”, action_add_queue_tail);parse_config_file(“/init.rc”)Check have /dev/consoleaction_for_each_trigger(“boot”, action_add_queue_tail);import_kernel_cmdline: /proc/cmdlineload_565rle_image(INIT_IMAGE_FILE)queue_all_property_triggers()get_hardware_name: /proc/cpuinfoIf load okrestart_processes()Yparse_config_file(/init.%s.rc)Show Image, and Print “A N D R O I D”to ttyEnd

可以具體描述如下:(1).初始化log系統。

(2).解析/init.rc和/init.%hardware%.rc文件。

(3).執行 early-init action in the two files parsed in step 2。

(4).設備初始化,例如:在 /dev 下面創建所有設備節點,下載 firmwares。

(5).初始化屬性服務器,Actually the property system is working as a share memory.Logically it looks like a registry under Windows system。

(6).執行 init action in the two files parsed in step 2。

(7).開啟 屬性服務。

(8).執行 early-boot and boot actions in the two files parsed in step 2。

(9).執行 Execute property action in the two files parsed in step 2。

(10).進入一個無限循環 to wait for device/property set/child process exit events。

2、方案基本框架,如下圖所示:

Native codeDaivik runtimeAndroidNDKappsJNIAndroidSDKappsAndroid app frameworkStandard librariesLinux kernel+Android extension

(1)圖中Native Code包含一系列運行與Linux內核之上,由C/C++語言寫成的庫,這些庫提供基本的系統級功能。其為應用層提供了本地開發的可擴展性,在此次開發過程中,Native Code主要為我們提供了音視頻的編解碼(即我們在此層開發了我們自己的音視頻的編解碼)。系統中主要使用的是G711音頻編解碼,實現語音的本地錄音及播放;FFMPEG視頻解碼,進行圖像視頻的解碼,實現視頻的實時播放。

(2)Dalvik runtime的相關介紹。Android系統的應用開發語言是Java,而保障這一點的就是Android runtime。Java語言的運行需要有虛擬機的存在,而Android runtime 的核心就是一個稱之為Dalvik的虛擬機。另外,Android runtime還包含了一個強大的Java核心類庫。這個類庫從功能上涵蓋了傳統Java核心類庫的大多數功能。應用程序調用Android 函數庫(即Android runtime中的Java核心類庫)中的函數時,其實只是調用的一個函數名,具體實現在Native Code中的Library中。即是Library為上層的應用提供API供開發使用。(3)關于JNI。Java Native Interface(JNI)標準,它允許Java代碼和其他語言寫的代碼進行交互。JNI一開始是為了本地已編譯語言,尤其是C和C++而設計的,但是它并不妨礙你使用其他語言,只要調用約定受支持就可以了。我們開發的音視頻本地編解碼庫,就是通過JNI來使用的。如下,private static native void InitEnv();private static native int drawFrame(Bitmap bitmap, byte[] inbuffer, int buf_len);這是我們在程序中調用的本地函數,先要使用關鍵字native進行本地聲明。static { System.loadLibrary(“decode”);}

這是用來加載我們的c動態庫的,上面的native聲明中的方法就是在我們加載的庫中具體實現的。

(4)Linux kernel 和Android extension部分。這一部分主要為我們提供了諸如硬件設備驅動(如display driver、camera driver等)、進程管理、內存管理、電源管理等底層功能。這一層的Linux并不是標準的GNU/Linux,而是根據我們的商業需求進行大量的定制。

下載Android錄音MediaRecorderAudioRecorder相關總結word格式文檔
下載Android錄音MediaRecorderAudioRecorder相關總結.doc
將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
點此處下載文檔

文檔為doc格式


聲明:本文內容由互聯網用戶自發貢獻自行上傳,本網站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發現有涉嫌版權的內容,歡迎發送郵件至:645879355@qq.com 進行舉報,并提供相關證據,工作人員會在5個工作日內聯系你,一經查實,本站將立刻刪除涉嫌侵權內容。

相關范文推薦

    Android面試總結

    1.activity的生命周期。 activity主要生命周期的方法說明: onCreate(Bundle savedInstanceState):創建activity時調用。設置在該方法中,還以Bundle的形式提供對以前儲存的任......

    Android 個人總結

    Android 個人總結 通過本學期的的學習,我知道了android是由google開發的一款手機平臺,android的基本架構是基于linux內核,由內核向外的反別為庫和應用架構,然后就是我們手機上的......

    Android學習總結

    Android學習總結 零零碎碎的總結:1.客戶端的功能邏輯不難,UI界面也不難,但寫UI花的時間是寫功能邏輯的兩倍. 2.寫代碼前的思考過程非常重要,即使在簡單的功能,也需要在本子......

    Android培訓總結(定稿)

    Android培訓總結 非常高興能夠參加清華大學的Android暑期培訓,感謝老師們對我們的教導和關心,在短短一個月的時間里我學到了Java、數據庫、Android、JSP等知識。最重要的是通......

    Android藍牙連接總結

    藍牙連線時首先會定義一個專門用來連接的函數體BtconnectDevice,當按下Btconnect(為一個Buttton名時)時,程序會判斷此時Btconnect鍵是什么狀態,當Btconnect鍵為連接狀態時,因為按......

    Android之activity總結

    Android之Activity總結 一、什么是Activity Activity 是用戶接口程序,原則上它會提供給用戶一個交互式的接口功能。它是 android 應用程序的基本功能單元。Activity 本身是......

    Android期末復習題總結

    1、 Intent的Component屬性的作用是什么,如何定義此屬性? component(組件),指定Intent的的目標組件的類名稱。通常 Android會根據Intent 中包含的其它屬性的信息,比如action、dat......

    Android學習總結 20110325專題

    Android學習總結 在這段時間主要對Android平臺有了一定的了解,對一些簡單的設計也有了一定的掌握Android概念 Android是一個基于Linux核心的開放手持設備(主要是手機)平臺操作......

主站蜘蛛池模板: 国产精品乱码人妻一区二区三区| 亚洲乱亚洲乱少妇无码| 国产又黄又大又粗视频| 野外亲子乱子伦视频丶| 亚洲国产美女精品久久久久| 精品久久久久久无码人妻vr| 免费无码又爽又刺激激情视频| 国产sm鞭打折磨调教视频| 亚洲欧美日韩精品专区| 丁香五月缴情在线| 久久99国产综合精品| 成年无码av片完整版| 好硬好湿好爽再深一点动态图视频| 亚洲高清揄拍自拍| 无码日韩人妻av一区二区三区| 狠狠躁夜夜躁人人爽天天古典| 国产精品无打码在线播放| av无码精品一区二区三区四区| 亚洲熟妇色xxxxx欧美老妇| 久久国产精品久久精品国产| 日产精品高潮呻吟av久久| 欧美成人精品一区二区三区色欲| 伊人久久婷婷五月综合97色| 经典国产乱子伦精品视频| 在线播放亚洲第一字幕| 国产亚洲精品精品精品| 国产偷录视频叫床高潮| 欧美日韩在线视频| 国产精品久久久久久久久鸭无码| 日韩精品无码一本二本三本| 国产精品黄在线观看免费软件| 国产精品久久久久9999无码| 欧美国产激情一区二区在线| 无码视频免费一区二区三区| 女人爽到高潮免费视频大全| 国产福利姬喷水福利在线观看| 中国老太太性老妇hd| 美女高潮无遮挡免费视频| 精品人妻码一区二区三区| 香蕉久久夜色精品升级完成| 国产热a欧美热a在线视频|