日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android应用开发--MP3音乐播放器代码实现(二)

發布時間:2025/3/15 Android 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android应用开发--MP3音乐播放器代码实现(二) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2013年5月25日 簡、美音樂播放器開發

小巫在這里羅列這個播放器已經實現的功能:

1.???自動顯示音樂列表

2.???點擊列表播放音樂

3.???長按列表彈出對話框

4.???暫停音樂

5.???上一首音樂

6.???下一首音樂

7.???自動播放下一首歌曲

8.???單曲循環

9.???全部循環

10.? 隨機播放

?

以上所有功能將會分為兩篇博文來講解,首先是主界面的,接著是播放界面的。在這里要說明一點,以上功能是小巫自己一點一點調試才實現的,并不能完全排除考慮不周的地方,原本這個軟件實現起來并不太難,但確實要考慮到很多細節的地方,播放狀態的切換和控制就是一塊,也花了我不少實現,之前還很苦惱實現自己想要的效果,但后來還是經過思考和調試把功能實現。所以說,開發是一個需要很耐心的過程,各位童鞋,如果真正喜歡編程的話,想要做出一些小作品的話,那就好好掂量自己的耐心吧,好了,廢話不多說,先貼一大段代碼,后面在慢慢把需要注意的地方說一下。

主界面效果圖:

? ? ? ? ? ??

以上界面的效果怎么實現的?

很簡單的,就是ListView的數據填充,但要填的的東西就要考慮了,怎么把數據從SQLite中獲取,小巫封裝了一個工具類,用來獲取與MP3相關的數據。

==>MediaUtils

[java] view plaincopy
  • package?com.wwj.sb.utils;??
  • ??
  • import?java.util.ArrayList;??
  • import?java.util.HashMap;??
  • import?java.util.Iterator;??
  • import?java.util.List;??
  • ??
  • import?android.content.Context;??
  • import?android.database.Cursor;??
  • import?android.provider.MediaStore;??
  • ??
  • import?com.wwj.sb.domain.Mp3Info;??
  • ??
  • public?class?MediaUtil?{??
  • ????/**?
  • ?????*?用于從數據庫中查詢歌曲的信息,保存在List當中?
  • ?????*??
  • ?????*?@return?
  • ?????*/??
  • ????public?static?List<Mp3Info>?getMp3Infos(Context?context)?{??
  • ????????Cursor?cursor?=?context.getContentResolver().query(??
  • ????????????????MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,?null,?null,?null,??
  • ????????????????MediaStore.Audio.Media.DEFAULT_SORT_ORDER);??
  • ????????List<Mp3Info>?mp3Infos?=?new?ArrayList<Mp3Info>();??
  • ????????for?(int?i?=?0;?i?<?cursor.getCount();?i++)?{??
  • ????????????cursor.moveToNext();??
  • ????????????Mp3Info?mp3Info?=?new?Mp3Info();??
  • ????????????long?id?=?cursor.getLong(cursor??
  • ????????????????????.getColumnIndex(MediaStore.Audio.Media._ID));???????????????//音樂id??
  • ????????????String?title?=?cursor.getString((cursor???
  • ????????????????????.getColumnIndex(MediaStore.Audio.Media.TITLE)));????????????//音樂標題??
  • ????????????String?artist?=?cursor.getString(cursor??
  • ????????????????????.getColumnIndex(MediaStore.Audio.Media.ARTIST));????????????//藝術家??
  • ????????????long?duration?=?cursor.getLong(cursor??
  • ????????????????????.getColumnIndex(MediaStore.Audio.Media.DURATION));??????????//時長??
  • ????????????long?size?=?cursor.getLong(cursor??
  • ????????????????????.getColumnIndex(MediaStore.Audio.Media.SIZE));??????????????//文件大小??
  • ????????????String?url?=?cursor.getString(cursor??
  • ????????????????????.getColumnIndex(MediaStore.Audio.Media.DATA));??????????????//文件路徑??
  • ????????????int?isMusic?=?cursor.getInt(cursor??
  • ????????????????????.getColumnIndex(MediaStore.Audio.Media.IS_MUSIC));??????????//是否為音樂??
  • ????????????if?(isMusic?!=?0)?{?????//只把音樂添加到集合當中??
  • ????????????????mp3Info.setId(id);??
  • ????????????????mp3Info.setTitle(title);??
  • ????????????????mp3Info.setArtist(artist);??
  • ????????????????mp3Info.setDuration(duration);??
  • ????????????????mp3Info.setSize(size);??
  • ????????????????mp3Info.setUrl(url);??
  • ????????????????mp3Infos.add(mp3Info);??
  • ????????????}??
  • ????????}??
  • ????????return?mp3Infos;??
  • ????}??
  • ??????
  • ????/**?
  • ?????*?往List集合中添加Map對象數據,每一個Map對象存放一首音樂的所有屬性?
  • ?????*?@param?mp3Infos?
  • ?????*?@return?
  • ?????*/??
  • ????public?static?List<HashMap<String,?String>>?getMusicMaps(??
  • ????????????List<Mp3Info>?mp3Infos)?{??
  • ????????List<HashMap<String,?String>>?mp3list?=?new?ArrayList<HashMap<String,?String>>();??
  • ????????for?(Iterator?iterator?=?mp3Infos.iterator();?iterator.hasNext();)?{??
  • ????????????Mp3Info?mp3Info?=?(Mp3Info)?iterator.next();??
  • ????????????HashMap<String,?String>?map?=?new?HashMap<String,?String>();??
  • ????????????map.put("title",?mp3Info.getTitle());??
  • ????????????map.put("Artist",?mp3Info.getArtist());??
  • ????????????map.put("duration",?formatTime(mp3Info.getDuration()));??
  • ????????????map.put("size",?String.valueOf(mp3Info.getSize()));??
  • ????????????map.put("url",?mp3Info.getUrl());??
  • ????????????mp3list.add(map);??
  • ????????}??
  • ????????return?mp3list;??
  • ????}??
  • ??????
  • ????/**?
  • ?????*?格式化時間,將毫秒轉換為分:秒格式?
  • ?????*?@param?time?
  • ?????*?@return?
  • ?????*/??
  • ????public?static?String?formatTime(long?time)?{??
  • ????????String?min?=?time?/?(1000?*?60)?+?"";??
  • ????????String?sec?=?time?%?(1000?*?60)?+?"";??
  • ????????if?(min.length()?<?2)?{??
  • ????????????min?=?"0"?+?time?/?(1000?*?60)?+?"";??
  • ????????}?else?{??
  • ????????????min?=?time?/?(1000?*?60)?+?"";??
  • ????????}??
  • ????????if?(sec.length()?==?4)?{??
  • ????????????sec?=?"0"?+?(time?%?(1000?*?60))?+?"";??
  • ????????}?else?if?(sec.length()?==?3)?{??
  • ????????????sec?=?"00"?+?(time?%?(1000?*?60))?+?"";??
  • ????????}?else?if?(sec.length()?==?2)?{??
  • ????????????sec?=?"000"?+?(time?%?(1000?*?60))?+?"";??
  • ????????}?else?if?(sec.length()?==?1)?{??
  • ????????????sec?=?"0000"?+?(time?%?(1000?*?60))?+?"";??
  • ????????}??
  • ????????return?min?+?":"?+?sec.trim().substring(0,?2);??
  • ????}??
  • }??


  • 好吧,來重頭戲了,一大段代碼來襲。

    HomeActivity.Java

    [java] view plaincopy
  • package?com.wwj.sb.activity;??
  • ??
  • import?java.util.HashMap;??
  • import?java.util.List;??
  • ??
  • import?android.app.Activity;??
  • import?android.app.AlertDialog;??
  • import?android.app.Service;??
  • import?android.content.BroadcastReceiver;??
  • import?android.content.Context;??
  • import?android.content.DialogInterface;??
  • import?android.content.Intent;??
  • import?android.content.IntentFilter;??
  • import?android.graphics.Color;??
  • import?android.os.Bundle;??
  • import?android.os.Vibrator;??
  • import?android.view.ContextMenu;??
  • import?android.view.ContextMenu.ContextMenuInfo;??
  • import?android.view.KeyEvent;??
  • import?android.view.View;??
  • import?android.view.View.OnClickListener;??
  • import?android.view.View.OnCreateContextMenuListener;??
  • import?android.view.ViewGroup.LayoutParams;??
  • import?android.widget.AdapterView;??
  • import?android.widget.AdapterView.OnItemClickListener;??
  • import?android.widget.ArrayAdapter;??
  • import?android.widget.Button;??
  • import?android.widget.ImageView;??
  • import?android.widget.ListView;??
  • import?android.widget.SimpleAdapter;??
  • import?android.widget.TextView;??
  • import?android.widget.Toast;??
  • ??
  • import?com.wwj.sb.domain.AppConstant;??
  • import?com.wwj.sb.domain.Mp3Info;??
  • import?com.wwj.sb.service.PlayerService;??
  • import?com.wwj.sb.utils.ConstantUtil;??
  • import?com.wwj.sb.utils.CustomDialog;??
  • import?com.wwj.sb.utils.MediaUtil;??
  • ??
  • /**?
  • ?*?2013/5/7?
  • ?*?簡、美音樂播放器?
  • ?*?@author?wwj?
  • ?*??
  • ?*/??
  • public?class?HomeActivity?extends?Activity?{??
  • ????private?ListView?mMusiclist;?//?音樂列表??
  • ????private?List<Mp3Info>?mp3Infos?=?null;??
  • ????private?SimpleAdapter?mAdapter;?//?簡單適配器??
  • ????private?Button?previousBtn;?//?上一首??
  • ????private?Button?repeatBtn;?//?重復(單曲循環、全部循環)??
  • ????private?Button?playBtn;?//?播放(播放、暫停)??
  • ????private?Button?shuffleBtn;?//?隨機播放??
  • ????private?Button?nextBtn;?//?下一首??
  • ????private?TextView?musicTitle;//歌曲標題??
  • ????private?TextView?musicDuration;?//歌曲時間??
  • ????private?Button?musicPlaying;????//歌曲專輯??
  • ??
  • ????private?int?repeatState;????????//循環標識??
  • ????private?final?int?isCurrentRepeat?=?1;?//?單曲循環??
  • ????private?final?int?isAllRepeat?=?2;?//?全部循環??
  • ????private?final?int?isNoneRepeat?=?3;?//?無重復播放??
  • ????private?boolean?isFirstTime?=?true;???
  • ????private?boolean?isPlaying;?//?正在播放??
  • ????private?boolean?isPause;?//?暫停??
  • ????private?boolean?isNoneShuffle?=?true;?//?順序播放??
  • ????private?boolean?isShuffle?=?false;?//?隨機播放??
  • ??????
  • ??????
  • ????private?int?listPosition?=?0;???//標識列表位置??
  • ????private?HomeReceiver?homeReceiver;??//自定義的廣播接收器??
  • ????//一系列動作??
  • ????public?static?final?String?UPDATE_ACTION?=?"com.wwj.action.UPDATE_ACTION";??
  • ????public?static?final?String?CTL_ACTION?=?"com.wwj.action.CTL_ACTION";??
  • ????public?static?final?String?MUSIC_CURRENT?=?"com.wwj.action.MUSIC_CURRENT";??
  • ????public?static?final?String?MUSIC_DURATION?=?"com.wwj.action.MUSIC_DURATION";??
  • ????public?static?final?String?REPEAT_ACTION?=?"com.wwj.action.REPEAT_ACTION";??
  • ????public?static?final?String?SHUFFLE_ACTION?=?"com.wwj.action.SHUFFLE_ACTION";??
  • ??????
  • ??????
  • ????private?int?currentTime;??
  • ????private?int?duration;??
  • ????@Override??
  • ????public?void?onCreate(Bundle?savedInstanceState)?{??
  • ????????super.onCreate(savedInstanceState);??
  • ????????setContentView(R.layout.home_activity_layout);??
  • ??
  • ????????mMusiclist?=?(ListView)?findViewById(R.id.music_list);??
  • ????????mMusiclist.setOnItemClickListener(new?MusicListItemClickListener());??
  • ????????mMusiclist.setOnCreateContextMenuListener(new?MusicListItemContextMenuListener());??
  • ????????mp3Infos?=?MediaUtil.getMp3Infos(getApplicationContext());??//獲取歌曲對象集合??
  • ????????setListAdpter(MediaUtil.getMusicMaps(mp3Infos));????//顯示歌曲列表??
  • ????????findViewById();?????????????//找到界面上的每一個控件??
  • ????????setViewOnclickListener();???//為一些控件設置監聽器??
  • ????????repeatState?=?isNoneRepeat;?//?初始狀態為無重復播放狀態??
  • ??????????
  • ??????????
  • ????????homeReceiver?=?new?HomeReceiver();??
  • ????????//?創建IntentFilter??
  • ????????IntentFilter?filter?=?new?IntentFilter();??
  • ????????//?指定BroadcastReceiver監聽的Action??
  • ????????filter.addAction(UPDATE_ACTION);??
  • ????????filter.addAction(MUSIC_CURRENT);??
  • ????????filter.addAction(MUSIC_DURATION);??
  • ????????filter.addAction(REPEAT_ACTION);??
  • ????????filter.addAction(SHUFFLE_ACTION);??
  • ????????//?注冊BroadcastReceiver??
  • ????????registerReceiver(homeReceiver,?filter);??
  • ??????????
  • ??
  • ????}??
  • ??
  • ????/**?
  • ?????*?從界面上根據id獲取按鈕?
  • ?????*/??
  • ????private?void?findViewById()?{??
  • ????????previousBtn?=?(Button)?findViewById(R.id.previous_music);??
  • ????????repeatBtn?=?(Button)?findViewById(R.id.repeat_music);??
  • ????????playBtn?=?(Button)?findViewById(R.id.play_music);??
  • ????????shuffleBtn?=?(Button)?findViewById(R.id.shuffle_music);??
  • ????????nextBtn?=?(Button)?findViewById(R.id.next_music);??
  • ????????musicTitle?=?(TextView)?findViewById(R.id.music_title);??
  • ????????musicDuration?=?(TextView)?findViewById(R.id.music_duration);??
  • ????????musicPlaying?=?(Button)?findViewById(R.id.playing);??
  • ????}??
  • ??
  • ????/**?
  • ?????*?給每一個按鈕設置監聽器?
  • ?????*/??
  • ????private?void?setViewOnclickListener()?{??
  • ????????ViewOnClickListener?viewOnClickListener?=?new?ViewOnClickListener();??
  • ????????previousBtn.setOnClickListener(viewOnClickListener);??
  • ????????repeatBtn.setOnClickListener(viewOnClickListener);??
  • ????????playBtn.setOnClickListener(viewOnClickListener);??
  • ????????shuffleBtn.setOnClickListener(viewOnClickListener);??
  • ????????nextBtn.setOnClickListener(viewOnClickListener);??
  • ????????musicPlaying.setOnClickListener(viewOnClickListener);??
  • ????}??
  • ??
  • ????private?class?ViewOnClickListener?implements?OnClickListener?{??
  • ????????Intent?intent?=?new?Intent();??
  • ????????@Override??
  • ????????public?void?onClick(View?v)?{??
  • ????????????switch?(v.getId())?{??
  • ????????????case?R.id.previous_music:?//?上一首??
  • ????????????????playBtn.setBackgroundResource(R.drawable.play_selector);??
  • ????????????????isFirstTime?=?false;??
  • ????????????????isPlaying?=?true;??
  • ????????????????isPause?=?false;??
  • ????????????????previous();??
  • ????????????????break;??
  • ????????????case?R.id.repeat_music:?//?重復播放??
  • ????????????????if?(repeatState?==?isNoneRepeat)?{??
  • ????????????????????repeat_one();??
  • ????????????????????shuffleBtn.setClickable(false);??
  • ????????????????????repeatState?=?isCurrentRepeat;??
  • ????????????????}?else?if?(repeatState?==?isCurrentRepeat)?{??
  • ????????????????????repeat_all();??
  • ????????????????????shuffleBtn.setClickable(false);??
  • ????????????????????repeatState?=?isAllRepeat;??
  • ????????????????}?else?if?(repeatState?==?isAllRepeat)?{??
  • ????????????????????repeat_none();??
  • ????????????????????shuffleBtn.setClickable(true);??
  • ????????????????????repeatState?=?isNoneRepeat;??
  • ????????????????}??
  • ????????????????switch?(repeatState)?{??
  • ????????????????case?isCurrentRepeat:?//?單曲循環??
  • ????????????????????repeatBtn??
  • ????????????????????????????.setBackgroundResource(R.drawable.repeat_current_selector);??
  • ????????????????????Toast.makeText(HomeActivity.this,?R.string.repeat_current,??
  • ????????????????????????????Toast.LENGTH_SHORT).show();??
  • ????????????????????break;??
  • ????????????????case?isAllRepeat:?//?全部循環??
  • ????????????????????repeatBtn??
  • ????????????????????????????.setBackgroundResource(R.drawable.repeat_all_selector);??
  • ????????????????????Toast.makeText(HomeActivity.this,?R.string.repeat_all,??
  • ????????????????????????????Toast.LENGTH_SHORT).show();??
  • ????????????????????break;??
  • ????????????????case?isNoneRepeat:?//?無重復??
  • ????????????????????repeatBtn??
  • ????????????????????????????.setBackgroundResource(R.drawable.repeat_none_selector);??
  • ????????????????????Toast.makeText(HomeActivity.this,?R.string.repeat_none,??
  • ????????????????????????????Toast.LENGTH_SHORT).show();??
  • ????????????????????break;??
  • ????????????????}??
  • ??
  • ????????????????break;??
  • ????????????case?R.id.play_music:?//?播放音樂??
  • ????????????????if(isFirstTime)?{??
  • ????????????????????play();??
  • ????????????????????isFirstTime?=?false;??
  • ????????????????????isPlaying?=?true;??
  • ????????????????????isPause?=?false;??
  • ????????????????}?else?{??
  • ????????????????????if?(isPlaying)?{??
  • ????????????????????????playBtn.setBackgroundResource(R.drawable.pause_selector);??
  • ????????????????????????intent.setAction("com.wwj.media.MUSIC_SERVICE");??
  • ????????????????????????intent.putExtra("MSG",?AppConstant.PlayerMsg.PAUSE_MSG);??
  • ????????????????????????startService(intent);??
  • ????????????????????????isPlaying?=?false;??
  • ????????????????????????isPause?=?true;??
  • ??????????????????????????
  • ????????????????????}?else?if?(isPause)?{??
  • ????????????????????????playBtn.setBackgroundResource(R.drawable.play_selector);??
  • ????????????????????????intent.setAction("com.wwj.media.MUSIC_SERVICE");??
  • ????????????????????????intent.putExtra("MSG",?AppConstant.PlayerMsg.CONTINUE_MSG);??
  • ????????????????????????startService(intent);??
  • ????????????????????????isPause?=?false;??
  • ????????????????????????isPlaying?=?true;??
  • ????????????????????}??
  • ????????????????}??
  • ????????????????break;??
  • ????????????case?R.id.shuffle_music:?//?隨機播放??
  • ????????????????if?(isNoneShuffle)?{??
  • ????????????????????shuffleBtn??
  • ????????????????????????????.setBackgroundResource(R.drawable.shuffle_selector);??
  • ????????????????????Toast.makeText(HomeActivity.this,?R.string.shuffle,??
  • ????????????????????????????Toast.LENGTH_SHORT).show();??
  • ????????????????????isNoneShuffle?=?false;??
  • ????????????????????isShuffle?=?true;??
  • ????????????????????shuffleMusic();??
  • ????????????????????repeatBtn.setClickable(false);??
  • ????????????????}?else?if?(isShuffle)?{??
  • ????????????????????shuffleBtn??
  • ????????????????????????????.setBackgroundResource(R.drawable.shuffle_none_selector);??
  • ????????????????????Toast.makeText(HomeActivity.this,?R.string.shuffle_none,??
  • ????????????????????????????Toast.LENGTH_SHORT).show();??
  • ????????????????????isShuffle?=?false;??
  • ????????????????????isNoneShuffle?=?true;??
  • ????????????????????repeatBtn.setClickable(true);??
  • ????????????????}??
  • ????????????????break;??
  • ????????????case?R.id.next_music:?//?下一首??
  • ????????????????playBtn.setBackgroundResource(R.drawable.play_selector);??
  • ????????????????isFirstTime?=?false;??
  • ????????????????isPlaying?=?true;??
  • ????????????????isPause?=?false;??
  • ????????????????next();??
  • ????????????????break;??
  • ????????????case?R.id.playing:??//正在播放??
  • ????????????????Mp3Info?mp3Info?=?mp3Infos.get(listPosition);??
  • ????????????????Intent?intent?=?new?Intent(HomeActivity.this,?PlayerActivity.class);??
  • ????????????????intent.putExtra("title",?mp3Info.getTitle());?????
  • ????????????????intent.putExtra("url",?mp3Info.getUrl());??
  • ????????????????intent.putExtra("artist",?mp3Info.getArtist());??
  • ????????????????intent.putExtra("listPosition",?listPosition);??
  • ????????????????intent.putExtra("currentTime",?currentTime);??
  • ????????????????intent.putExtra("duration",?duration);??
  • ????????????????intent.putExtra("MSG",?AppConstant.PlayerMsg.PLAYING_MSG);??
  • ????????????????startActivity(intent);??
  • ????????????????break;??
  • ????????????}??
  • ????????}??
  • ????}??
  • ??
  • ????private?class?MusicListItemClickListener?implements?OnItemClickListener?{??
  • ????????/**?
  • ?????????*?點擊列表播放音樂?
  • ?????????*/??
  • ????????@Override??
  • ????????public?void?onItemClick(AdapterView<?>?parent,?View?view,?int?position,??
  • ????????????????long?id)?{??
  • ????????????listPosition?=?position;??
  • ????????????playMusic(listPosition);??????????
  • ????????}??
  • ??
  • ????}??
  • ??????
  • ????public?class?MusicListItemContextMenuListener?implements?OnCreateContextMenuListener?{??
  • ??
  • ????????@Override??
  • ????????public?void?onCreateContextMenu(ContextMenu?menu,?View?v,??
  • ????????????????ContextMenuInfo?menuInfo)?{??
  • ????????????Vibrator?vibrator?=?(Vibrator)?getSystemService(Service.VIBRATOR_SERVICE);??
  • ????????????vibrator.vibrate(50);???????//長按振動??
  • ????????????musicListItemDialog();??????//長按后彈出的對話框??
  • ????????}??
  • ??
  • ????}??
  • ??
  • ????/**?
  • ?????*?填充列表?
  • ?????*??
  • ?????*?@param?mp3Infos?
  • ?????*/??
  • ????public?void?setListAdpter(List<HashMap<String,?String>>?mp3list)?{??
  • ????????mAdapter?=?new?SimpleAdapter(this,?mp3list,??
  • ????????????????R.layout.music_list_item_layout,?new?String[]?{?"title",??
  • ????????????????????????"Artist",?"duration"?},?new?int[]?{?R.id.music_title,??
  • ????????????????????????R.id.music_Artist,?R.id.music_duration?});??
  • ????????mMusiclist.setAdapter(mAdapter);??
  • ????}??
  • ??????
  • ??????
  • ????/**?
  • ?????*?下一首歌曲?
  • ?????*/??
  • ????public?void?next()?{??
  • ????????listPosition?=?listPosition?+?1;??
  • ????????if(listPosition?<=?mp3Infos.size()?-?1)?{??
  • ????????????Mp3Info?mp3Info?=?mp3Infos.get(listPosition);??
  • ????????????musicTitle.setText(mp3Info.getTitle());??
  • ????????????Intent?intent?=?new?Intent();??
  • ????????????intent.setAction("com.wwj.media.MUSIC_SERVICE");??
  • ????????????intent.putExtra("listPosition",?listPosition);??
  • ????????????intent.putExtra("url",?mp3Info.getUrl());??
  • ????????????intent.putExtra("MSG",?AppConstant.PlayerMsg.NEXT_MSG);??
  • ????????????startService(intent);??
  • ????????}?else?{??
  • ????????????Toast.makeText(HomeActivity.this,?"沒有下一首了",?Toast.LENGTH_SHORT).show();??
  • ????????}??
  • ????}??
  • ??
  • ????/**?
  • ?????*?上一首歌曲?
  • ?????*/??
  • ????public?void?previous()?{??
  • ????????listPosition?=?listPosition?-?1;??
  • ????????if(listPosition?>=?0)?{??
  • ????????????Mp3Info?mp3Info?=?mp3Infos.get(listPosition);??
  • ????????????musicTitle.setText(mp3Info.getTitle());??
  • ????????????Intent?intent?=?new?Intent();??
  • ????????????intent.setAction("com.wwj.media.MUSIC_SERVICE");??
  • ????????????intent.putExtra("listPosition",?listPosition);??
  • ????????????intent.putExtra("url",?mp3Info.getUrl());??
  • ????????????intent.putExtra("MSG",?AppConstant.PlayerMsg.PRIVIOUS_MSG);??
  • ????????????startService(intent);??
  • ????????}else?{??
  • ????????????Toast.makeText(HomeActivity.this,?"沒有上一首了",?Toast.LENGTH_SHORT).show();??
  • ????????}??
  • ????}??
  • ??
  • ????public?void?play()?{??
  • ????????playBtn.setBackgroundResource(R.drawable.play_selector);??
  • ????????Mp3Info?mp3Info?=?mp3Infos.get(listPosition);??
  • ????????musicTitle.setText(mp3Info.getTitle());??
  • ????????Intent?intent?=?new?Intent();??
  • ????????intent.setAction("com.wwj.media.MUSIC_SERVICE");??
  • ????????intent.putExtra("listPosition",?0);??
  • ????????intent.putExtra("url",?mp3Info.getUrl());??
  • ????????intent.putExtra("MSG",?AppConstant.PlayerMsg.PLAY_MSG);??
  • ????????startService(intent);??
  • ????}??
  • ??????
  • ????/**?
  • ?????*?單曲循環?
  • ?????*/??
  • ????public?void?repeat_one()?{??
  • ????????Intent?intent?=?new?Intent(CTL_ACTION);??
  • ????????intent.putExtra("control",?1);??
  • ????????sendBroadcast(intent);??
  • ????}??
  • ??????
  • ????/**?
  • ?????*?全部循環?
  • ?????*/??
  • ????public?void?repeat_all()?{??
  • ????????Intent?intent?=?new?Intent(CTL_ACTION);??
  • ????????intent.putExtra("control",?2);??
  • ????????sendBroadcast(intent);??
  • ????}??
  • ??
  • ????/**?
  • ?????*?順序播放?
  • ?????*/??
  • ????public?void?repeat_none()?{??
  • ????????Intent?intent?=?new?Intent(CTL_ACTION);??
  • ????????intent.putExtra("control",?3);??
  • ????????sendBroadcast(intent);??
  • ????}??
  • ??????
  • ????/**?
  • ?????*?隨機播放?
  • ?????*/??
  • ????public?void?shuffleMusic()?{??
  • ????????Intent?intent?=?new?Intent(CTL_ACTION);??
  • ????????intent.putExtra("control",?4);??
  • ????????sendBroadcast(intent);??
  • ????}??
  • ??
  • ????public?void?musicListItemDialog()?{??
  • ????????String[]?menuItems?=?new?String[]{"播放音樂","設為鈴聲","查看詳情"};??
  • ????????ListView?menuList?=?new?ListView(HomeActivity.this);??
  • ????????menuList.setCacheColorHint(Color.TRANSPARENT);??
  • ????????menuList.setDividerHeight(1);??
  • ????????menuList.setAdapter(new?ArrayAdapter<String>(HomeActivity.this,?R.layout.context_dialog_layout,?R.id.dialogText,?menuItems));??
  • ????????menuList.setLayoutParams(new?LayoutParams(ConstantUtil.getScreen(HomeActivity.this)[0]?/?2,?LayoutParams.WRAP_CONTENT));??
  • ??????????
  • ??????????
  • ????????final?CustomDialog?customDialog?=?new?CustomDialog.Builder(HomeActivity.this).setTitle(R.string.operation).setView(menuList).create();??
  • ????????customDialog.show();??
  • ??????????
  • ????????menuList.setOnItemClickListener(?new?OnItemClickListener()?{??
  • ??
  • ????????????@Override??
  • ????????????public?void?onItemClick(AdapterView<?>?parent,?View?view,??
  • ????????????????????int?position,?long?id)?{??
  • ????????????????customDialog.cancel();??
  • ????????????????customDialog.dismiss();??
  • ????????????}??
  • ??????????????
  • ????????});??
  • ????}??
  • ????public?void?playMusic(int?listPosition)?{??
  • ????????if?(mp3Infos?!=?null)?{??
  • ????????????Mp3Info?mp3Info?=?mp3Infos.get(listPosition);??
  • ????????????musicTitle.setText(mp3Info.getTitle());??
  • ????????????Intent?intent?=?new?Intent(HomeActivity.this,?PlayerActivity.class);??
  • ????????????intent.putExtra("title",?mp3Info.getTitle());?????
  • ????????????intent.putExtra("url",?mp3Info.getUrl());??
  • ????????????intent.putExtra("artist",?mp3Info.getArtist());??
  • ????????????intent.putExtra("listPosition",?listPosition);??
  • ????????????intent.putExtra("currentTime",?currentTime);??
  • ????????????intent.putExtra("repeatState",?repeatState);??
  • ????????????intent.putExtra("shuffleState",?isShuffle);??
  • ????????????intent.putExtra("MSG",?AppConstant.PlayerMsg.PLAY_MSG);??
  • ????????????startActivity(intent);??
  • ????????}??
  • ????}??
  • ??????
  • ????@Override??
  • ????protected?void?onStop()?{??
  • ????????//?TODO?Auto-generated?method?stub??
  • ????????super.onStop();??
  • ????}??
  • ??????
  • ??????
  • ????@Override??
  • ????protected?void?onDestroy()?{??
  • ????????//?TODO?Auto-generated?method?stub??
  • ????????super.onDestroy();??
  • ????}??
  • ??????
  • ????/**?
  • ?????*?按返回鍵彈出對話框確定退出?
  • ?????*/??
  • ????@Override??
  • ????public?boolean?onKeyDown(int?keyCode,?KeyEvent?event)?{??
  • ????????if?(keyCode?==?KeyEvent.KEYCODE_BACK??
  • ????????????????&&?event.getAction()?==?KeyEvent.ACTION_DOWN)?{??
  • ??
  • ????????????new?AlertDialog.Builder(this)??
  • ????????????????????.setIcon(R.drawable.ic_launcher)??
  • ????????????????????.setTitle("退出")??
  • ????????????????????.setMessage("您確定要退出?")??
  • ????????????????????.setNegativeButton("取消",?null)??
  • ????????????????????.setPositiveButton("確定",??
  • ????????????????????????????new?DialogInterface.OnClickListener()?{??
  • ??
  • ????????????????????????????????@Override??
  • ????????????????????????????????public?void?onClick(DialogInterface?dialog,??
  • ????????????????????????????????????????int?which)?{??
  • ????????????????????????????????????finish();??
  • ????????????????????????????????????Intent?intent?=?new?Intent(??
  • ????????????????????????????????????????????HomeActivity.this,??
  • ????????????????????????????????????????????PlayerService.class);??
  • ????????????????????????????????????unregisterReceiver(homeReceiver);??
  • ????????????????????????????????????stopService(intent);?//?停止后臺服務??
  • ????????????????????????????????}??
  • ????????????????????????????}).show();??
  • ??
  • ????????}??
  • ????????return?super.onKeyDown(keyCode,?event);??
  • ????}??
  • ??????
  • ??????
  • ????//自定義的BroadcastReceiver,負責監聽從Service傳回來的廣播??
  • ????public?class?HomeReceiver?extends?BroadcastReceiver?{??
  • ??
  • ????????@Override??
  • ????????public?void?onReceive(Context?context,?Intent?intent)?{??
  • ????????????String?action?=?intent.getAction();???
  • ????????????if(action.equals(MUSIC_CURRENT)){??
  • ????????????????//currentTime代表當前播放的時間??
  • ????????????????currentTime?=?intent.getIntExtra("currentTime",?-1);??
  • ????????????????musicDuration.setText(MediaUtil.formatTime(currentTime));??
  • ????????????}?else?if?(action.equals(MUSIC_DURATION))?{??
  • ????????????????duration?=?intent.getIntExtra("duration",?-1);??
  • ????????????}??
  • ????????????else?if(action.equals(UPDATE_ACTION))?{??
  • ????????????????//獲取Intent中的current消息,current代表當前正在播放的歌曲??
  • ????????????????listPosition?=?intent.getIntExtra("current",?-1);??
  • ????????????????if(listPosition?>=?0)?{??
  • ????????????????????musicTitle.setText(mp3Infos.get(listPosition).getTitle());??
  • ????????????????}??
  • ????????????}else?if(action.equals(REPEAT_ACTION))?{??
  • ????????????????repeatState?=?intent.getIntExtra("repeatState",?-1);??
  • ????????????????switch?(repeatState)?{??
  • ????????????????case?isCurrentRepeat:?//?單曲循環??
  • ????????????????????repeatBtn??
  • ????????????????????????????.setBackgroundResource(R.drawable.repeat_current_selector);??
  • ????????????????????shuffleBtn.setClickable(false);??
  • ????????????????????break;??
  • ????????????????case?isAllRepeat:?//?全部循環??
  • ????????????????????repeatBtn??
  • ????????????????????????????.setBackgroundResource(R.drawable.repeat_all_selector);??
  • ????????????????????shuffleBtn.setClickable(false);??
  • ????????????????????break;??
  • ????????????????case?isNoneRepeat:?//?無重復??
  • ????????????????????repeatBtn??
  • ????????????????????????????.setBackgroundResource(R.drawable.repeat_none_selector);??
  • ????????????????????shuffleBtn.setClickable(true);??
  • ????????????????????break;??
  • ????????????????}??
  • ????????????}??
  • ????????????else?if(action.equals(SHUFFLE_ACTION))?{??
  • ????????????????isShuffle?=?intent.getBooleanExtra("shuffleState",?false);??
  • ????????????????if(isShuffle)?{??
  • ????????????????????isNoneShuffle?=?false;??
  • ????????????????????shuffleBtn.setBackgroundResource(R.drawable.shuffle_selector);??
  • ????????????????????repeatBtn.setClickable(false);??
  • ????????????????}?else?{??
  • ????????????????????isNoneShuffle?=?true;??
  • ????????????????????shuffleBtn.setBackgroundResource(R.drawable.shuffle_none_selector);??
  • ????????????????????repeatBtn.setClickable(true);??
  • ????????????????}??
  • ????????????}??
  • ????????}??
  • ??????????
  • ????}??
  • }??


  • 到這里,要開講啦。

    以下是需要注意的幾點:

    1. 音樂是通過Service來播放的,Activity通過啟動服務來實現在后臺播放音樂。

    2. Activity中自定義了一個廣播接收器,需要進行intent過濾器的定義,動作的添加,注冊廣播接收器:

    [java] view plaincopy
  • <span?style="white-space:pre">??????</span>homeReceiver?=?new?HomeReceiver();??
  • ????????//?創建IntentFilter??
  • ????????IntentFilter?filter?=?new?IntentFilter();??
  • ????????//?指定BroadcastReceiver監聽的Action??
  • ????????filter.addAction(UPDATE_ACTION);??
  • ????????filter.addAction(MUSIC_CURRENT);??
  • ????????filter.addAction(MUSIC_DURATION);??
  • ????????filter.addAction(REPEAT_ACTION);??
  • ????????filter.addAction(SHUFFLE_ACTION);??
  • ????????//?注冊BroadcastReceiver??
  • ????????registerReceiver(homeReceiver,?filter);??
  • ??????????


  • 3. 在廣播接收器類當中對動作進行處理,比如實現時間的更新和標題的更新等。

    4. 這里還要注意按鈕觸發,播放狀態的改變,比如音樂循環,有三種狀態:單曲、全部循環、順序,每切換一個狀態都要向服務發送一條廣播,通知它要改變狀態。

    5. 點擊列表的時候,會跳入到播放界面的Activity中,要注意用intent來傳遞參數,注意每個參數的用途,比如title、url、MSG,就分別代表標題、路徑、播放狀態。

    6. 長按列表會彈出自定義對話框,也會有短暫的震動效果,自定義對話框需要自行實現。這里我也貼一下實現代碼吧。

    [java] view plaincopy
  • package?com.wwj.sb.utils;??
  • ??
  • ??
  • import?android.app.Activity;??
  • import?android.app.Dialog;??
  • import?android.content.Context;??
  • import?android.content.DialogInterface;??
  • import?android.text.TextUtils;??
  • import?android.view.LayoutInflater;??
  • import?android.view.View;??
  • import?android.view.ViewGroup;??
  • import?android.view.ViewGroup.LayoutParams;??
  • import?android.widget.Button;??
  • import?android.widget.FrameLayout;??
  • import?android.widget.ImageView;??
  • import?android.widget.LinearLayout;??
  • import?android.widget.TextView;??
  • ??
  • import?com.wwj.sb.activity.R;??
  • ??
  • /**?
  • ?*?自定義對話框類?
  • ?*??
  • ?*?@author?wwj?
  • ?*??
  • ?*/??
  • public?class?CustomDialog?extends?Dialog?{??
  • ??
  • ????public?CustomDialog(Context?context)?{??
  • ????????super(context);??
  • ????}??
  • ??
  • ????public?CustomDialog(Context?context,?int?theme)?{??
  • ????????super(context,?theme);??
  • ????}??
  • ??
  • ????public?static?class?Builder?{??
  • ??
  • ????????private?Context?context;??
  • ????????private?int?mIcon?=?-1;?//?提示圖標??
  • ????????private?CharSequence?mTitle;?//?提示標題??
  • ????????private?CharSequence?mMessage;?//?提示內容??
  • ????????private?CharSequence?mPositiveButtonText;?//?確定按鈕文本??
  • ????????private?CharSequence?mNegativeButtonText;?//?取消按鈕文本??
  • ????????private?CharSequence?mNeutralButtonText;?//?中間按鈕文本??
  • ????????private?boolean?mCancelable?=?true;?//?是否啟用取消鍵??
  • ??
  • ????????private?int?mViewSpacingLeft;??
  • ????????private?int?mViewSpacingTop;??
  • ????????private?int?mViewSpacingRight;??
  • ????????private?int?mViewSpacingBottom;??
  • ????????private?boolean?mViewSpacingSpecified?=?false;??
  • ??
  • ????????//?提示內容View??
  • ????????private?View?mView;??
  • ??
  • ????????//?各種觸發事件??
  • ????????private?OnClickListener?mPositiveButtonClickListener,??
  • ????????????????mNegativeButtonClickListener,?mNeutralButtonClickListener;??
  • ????????private?OnCancelListener?mCancelListener;?//?取消鍵事件??
  • ????????private?OnKeyListener?mKeyListener;?//?按鍵處理??
  • ??
  • ????????public?Builder(Context?context)?{??
  • ????????????this.context?=?context;??
  • ????????}??
  • ??
  • ????????public?Builder?setMessage(CharSequence?message)?{??
  • ????????????this.mMessage?=?message;??
  • ????????????return?this;??
  • ????????}??
  • ??
  • ????????public?Builder?setMessage(int?message)?{??
  • ????????????this.mMessage?=?context.getText(message);??
  • ????????????return?this;??
  • ????????}??
  • ??
  • ????????public?Builder?setTitle(int?title)?{??
  • ????????????this.mTitle?=?context.getText(title);??
  • ????????????return?this;??
  • ????????}??
  • ??
  • ????????public?Builder?setTitle(CharSequence?title)?{??
  • ????????????this.mTitle?=?title;??
  • ????????????return?this;??
  • ????????}??
  • ??
  • ????????public?Builder?setIcon(int?icon)?{??
  • ????????????this.mIcon?=?icon;??
  • ????????????return?this;??
  • ????????}??
  • ??
  • ????????public?Builder?setView(View?view)?{??
  • ????????????this.mView?=?view;??
  • ????????????mViewSpacingSpecified?=?false;??
  • ????????????return?this;??
  • ????????}??
  • ??
  • ????????public?Builder?setView(View?view,?int?left,?int?top,?int?right,??
  • ????????????????int?bottom)?{??
  • ????????????this.mView?=?view;??
  • ????????????this.mViewSpacingLeft?=?left;??
  • ????????????this.mViewSpacingTop?=?top;??
  • ????????????this.mViewSpacingRight?=?right;??
  • ????????????this.mViewSpacingBottom?=?bottom;??
  • ????????????mViewSpacingSpecified?=?true;??
  • ????????????return?this;??
  • ????????}??
  • ??
  • ????????public?Builder?setPositonButton(int?textId,??
  • ????????????????final?OnClickListener?listener)?{??
  • ????????????this.mPositiveButtonText?=?context.getText(textId);??
  • ????????????this.mPositiveButtonClickListener?=?listener;??
  • ????????????return?this;??
  • ????????}??
  • ??
  • ????????public?Builder?setPostionButton(String?text,??
  • ????????????????final?OnClickListener?listener)?{??
  • ????????????this.mPositiveButtonText?=?text;??
  • ????????????this.mPositiveButtonClickListener?=?listener;??
  • ????????????return?this;??
  • ????????}??
  • ??
  • ????????public?Builder?setNeutralButton(int?textId,??
  • ????????????????final?OnClickListener?listener)?{??
  • ????????????this.mNeutralButtonText?=?context.getText(textId);??
  • ????????????this.mNeutralButtonClickListener?=?listener;??
  • ????????????return?this;??
  • ????????}??
  • ??????????
  • ????????public?Builder?setNeutralButton(String?text,?final?OnClickListener?listener)?{??
  • ????????????this.mNeutralButtonText?=?text;??
  • ????????????this.mNeutralButtonClickListener?=?listener;??
  • ????????????return?this;??
  • ????????}??
  • ????????public?Builder?setNegativeButton(int?textId,??
  • ????????????????final?OnClickListener?listener)?{??
  • ????????????this.mNegativeButtonText?=?context.getText(textId);??
  • ????????????this.mNegativeButtonClickListener?=?listener;??
  • ????????????return?this;??
  • ????????}??
  • ??
  • ????????public?Builder?setNegativeButton(String?text,??
  • ????????????????final?OnClickListener?listener)?{??
  • ????????????this.mNegativeButtonText?=?text;??
  • ????????????this.mNegativeButtonClickListener?=?listener;??
  • ????????????return?this;??
  • ????????}??
  • ??????????
  • ??????????
  • ????????public?Builder?setCancelable(boolean?cancelable)?{??
  • ????????????this.mCancelable?=?cancelable;??
  • ????????????return?this;??
  • ????????}??
  • ??????????
  • ????????public?Builder?setOnCancelListener(OnCancelListener?listener)?{??
  • ????????????this.mCancelListener?=?listener;??
  • ????????????return?this;??
  • ????????}??
  • ??????????
  • ????????public?Builder?setOnKeyListener(OnKeyListener?listener)?{??
  • ????????????this.mKeyListener?=?listener;??
  • ????????????return?this;??
  • ????????}??
  • ??????????
  • ????????public?CustomDialog?create()?{??
  • ????????????LayoutInflater?inflater?=?(LayoutInflater)?context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);??
  • ????????????final?CustomDialog?dialog?=?new?CustomDialog(context,?R.style.CustomDialog);??
  • ????????????dialog.setCancelable(mCancelable);??
  • ????????????//設置取消鍵事件??
  • ????????????if(mCancelListener?!=?null)?{??
  • ????????????????dialog.setOnCancelListener(mCancelListener);??
  • ????????????}??
  • ????????????//設置鍵盤監聽事件??
  • ????????????if(mKeyListener?!=?null)?{??
  • ????????????????dialog.setOnKeyListener(mKeyListener);??
  • ????????????}??
  • ????????????//獲取對話框布局??
  • ????????????View?layout?=?inflater.inflate(R.layout.alert_dialog,?(ViewGroup)(((Activity)context).findViewById(R.id.parentPanel)));??
  • ????????????layout.setLayoutParams(new?LayoutParams(LayoutParams.MATCH_PARENT,?LayoutParams.WRAP_CONTENT));??
  • ??????????????
  • ????????????//設置標題??
  • ????????????((TextView)?layout.findViewById(R.id.alertTitle)).setText(mTitle);??
  • ????????????//設置圖標??
  • ????????????if(mIcon?!=?-1)?{??
  • ????????????????((ImageView)?layout.findViewById(R.id.icon))??
  • ????????????????.setBackgroundResource(mIcon);??
  • ????????????}??
  • ??????????????
  • ????????????int?count?=?0;??
  • ????????????//設置確定按鈕??
  • ????????????if(setButton(layout,?mPositiveButtonText,?R.id.button1,?dialog,?mPositiveButtonClickListener))?count++;??
  • ????????????//?設置拒絕按鈕??
  • ????????????if(setButton(layout,?mNegativeButtonText,?R.id.button2,?dialog,?mNegativeButtonClickListener))?count++;??
  • ????????????//?設置中間按鈕??
  • ????????????if(setButton(layout,?mNeutralButtonText,?R.id.button3,?dialog,?mNeutralButtonClickListener))?count++;??
  • ??????????????
  • ????????????if(count?==?0)?{??
  • ????????????????layout.findViewById(R.id.buttonPanel).setVisibility(View.GONE);??
  • ????????????}??
  • ????????????//一個按鈕時,顯示兩邊空間??
  • ????????????if(count?==?1)?{??
  • ????????????????layout.findViewById(R.id.leftSpacer)??
  • ????????????????????.setVisibility(View.INVISIBLE);??
  • ????????????????layout.findViewById(R.id.rightSpacer).setVisibility(View.INVISIBLE);??
  • ????????????}??
  • ????????????//設置提示消息??
  • ????????????if(!TextUtils.isEmpty(mMessage))?{??
  • ????????????????((TextView)layout.findViewById(R.id.message))??
  • ????????????????????.setText(mMessage);??
  • ????????????}?else?{??
  • ????????????????((LinearLayout)?layout.findViewById(R.id.contentPanel))??
  • ????????????????????.setVisibility(View.GONE);??
  • ????????????}??
  • ????????????//設置提示內容布局??
  • ????????????if(mView?!=?null)?{??
  • ????????????????final?FrameLayout?customPanel?=?(FrameLayout)?layout??
  • ????????????????????????.findViewById(R.id.customPanel);??
  • ????????????????if(mViewSpacingSpecified)?{??
  • ????????????????????customPanel.setPadding(mViewSpacingLeft,?mViewSpacingTop,?mViewSpacingRight,?mViewSpacingBottom);??
  • ????????????????}??
  • ????????????????customPanel.addView(mView);??
  • ????????????}?else?{??
  • ????????????????((FrameLayout)?layout.findViewById(R.id.customPanel))??
  • ????????????????????????????.setVisibility(View.GONE);??
  • ????????????}??
  • ????????????dialog.setContentView(layout);??
  • ????????????return?dialog;??
  • ??????????????????
  • ????????}??
  • ??????????
  • ????????public?CustomDialog?show()?{??
  • ????????????CustomDialog?dialog?=?create();??
  • ????????????dialog.show();??
  • ????????????return?dialog;??
  • ????????}??
  • ??????????
  • ????????private?boolean?setButton(View?layout,?CharSequence?mPositiveButtonText,?int?id,?final?Dialog?dialog,?final?OnClickListener?listener)?{??
  • ????????????if(!TextUtils.isEmpty(mPositiveButtonText))?{??
  • ????????????????final?Button?button?=?(Button)?layout.findViewById(id);??
  • ????????????????button.setText(mPositiveButtonText);??
  • ????????????????if(listener?!=?null)?{??
  • ????????????????????button.setOnClickListener(new?View.OnClickListener()?{??
  • ??????????????????????????
  • ????????????????????????@Override??
  • ????????????????????????public?void?onClick(View?v)?{??
  • ????????????????????????????listener.onClick(dialog,?DialogInterface.BUTTON_POSITIVE);??
  • ????????????????????????}??
  • ????????????????????});??
  • ????????????????}?else?{??
  • ????????????????????//默認事件為關閉對話框??
  • ????????????????????button.setOnClickListener(new?View.OnClickListener()?{??
  • ??????????????????????????
  • ????????????????????????@Override??
  • ????????????????????????public?void?onClick(View?v)?{??
  • ????????????????????????????dialog.cancel();??
  • ????????????????????????????dialog.dismiss();??
  • ????????????????????????}??
  • ????????????????????});??
  • ????????????????}??
  • ????????????????return?true;??
  • ????????????}?else?{??
  • ????????????????layout.findViewById(id).setVisibility(View.GONE);??
  • ????????????????return?false;??
  • ????????????}??
  • ????????}??
  • ????}??
  • }??

  • 關于主界面的業務邏輯具體實現和需要注意的地方,小巫已經說完了。其實最重要的是要寫好服務類,下一篇播放將會給童鞋們介紹服務類的實現。最后感謝大家的關注。

    總結

    以上是生活随笔為你收集整理的Android应用开发--MP3音乐播放器代码实现(二)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    五月激情天 | 24小时日本在线www免费的 | 草在线视频 | 夜夜视频资源 | 超碰在线公开免费 | 99久久影视| 四虎在线永久免费观看 | 91欧美日韩国产 | 91成人区 | 亚洲电影第一页av | 亚洲精品麻豆视频 | 精品一区二区免费在线观看 | 亚洲经典中文字幕 | 国产黄色大片免费看 | 亚洲一级片免费观看 | 国产中文自拍 | 五月激情综合婷婷 | 在线观看视频一区二区 | 久久视频一区 | 国产自产高清不卡 | 少妇bbbb揉bbbb日本 | 丁香色婷 | 国产一区二区在线播放视频 | 国产专区在线视频 | 99在线观看| 99久久精品国产毛片 | 久久久亚洲国产精品麻豆综合天堂 | 鲁一鲁影院| 亚洲成人xxx | 精品欧美小视频在线观看 | 人人干狠狠操 | 免费亚洲一区二区 | 免费欧美高清视频 | 国产一区二区三区免费在线观看 | www.av中文字幕.com | 久久国产精品99国产 | 亚洲国产精品va在线看黑人 | 国产精品久久久久久久婷婷 | 高清免费av在线 | 精品国精品自拍自在线 | 久久久久美女 | 欧美午夜精品久久久久久孕妇 | 日韩欧美综合精品 | 最新成人在线 | 91黄站| 午夜在线观看 | 天天操天天射天天舔 | 麻豆视频网址 | 在线精品观看国产 | 色婷五月天 | 国产精品www| 韩日电影在线 | 亚洲精品大全 | 国产成人不卡 | 亚洲日韩欧美一区二区在线 | 九九视频在线观看视频6 | 99久久久国产精品免费99 | 欧美乱淫视频 | 久久五月婷婷丁香 | 欧美精品久久久久久久久久丰满 | 国产精品久久久久久久久久免费 | 欧美视频一区二 | 精品久久久久久久久久久久久久久久久久 | 九九视频这里只有精品 | 在线a视频 | www.天天色 | 久久欧美精品 | 一区二区三区www | 免费人成在线观看 | 麻花豆传媒mv在线观看 | 91视频在线播放视频 | 成人中文字幕在线 | 91麻豆精品91久久久久同性 | 国产99久久久欧美黑人 | 久久免费福利视频 | 欧美成人理伦片 | 99国产精品视频免费观看一公开 | 中文字幕人成乱码在线观看 | 久久久久久久久久电影 | 深爱激情婷婷网 | 国产高清日韩欧美 | 久久少妇免费视频 | 亚洲欧洲日韩 | 91亚洲综合 | 激情丁香 | 亚洲欧美视频一区二区三区 | 中文字幕五区 | 五月综合激情婷婷 | 精品国产伦一区二区三区观看说明 | 五月情婷婷 | av爱干| 国产v视频| 天天操天天舔天天爽 | 色婷婷导航 | 亚洲美女视频在线 | www.亚洲精品在线 | 国产欧美久久久精品影院 | 欧美91片 | 五月天av在线 | 在线观看va | 成人精品一区二区三区电影免费 | 精品一区二区视频 | 成人一级片免费看 | 日韩va亚洲va欧美va久久 | 久久久久久中文字幕 | 久草精品视频在线看网站免费 | 国产在线1区 | 亚洲精品mv在线观看 | 国产精品免费久久久久 | 91丨九色丨蝌蚪丨老版 | 91完整视频 | 99r精品视频在线观看 | 四虎永久网站 | 六月激情网 | 96视频免费在线观看 | 欧美精品免费在线 | 国产在线精品一区二区不卡了 | 国产在线一区二区 | 在线观看av中文字幕 | 中文网丁香综合网 | 欧美色婷 | 日韩在线视频观看免费 | 2017狠狠干| 久久久国产精品久久久 | 菠萝菠萝在线精品视频 | 99在线视频网站 | 99久久夜色精品国产亚洲 | 一区二区三区四区影院 | 成人啪啪18免费游戏链接 | 日韩特级黄色片 | 免费精品国产va自在自线 | 狠狠网 | 欧美性生活免费 | 99在线热播 | 色婷婷激情网 | 国产 字幕 制服 中文 在线 | 国产精品综合久久 | 免费成人在线视频网站 | 中文字幕xxxx | 日韩欧美高清在线 | 在线超碰av | 91av九色 | 亚洲视频999 | 九九视频精品在线 | 麻豆成人精品视频 | 在线一区二区三区 | 97在线视频免费看 | 久久这里只有精品23 | 手机在线欧美 | 免费视频一级片 | 免费毛片一区二区三区久久久 | 91精品亚洲影视在线观看 | 天天想夜夜操 | 亚洲国产理论片 | 奇米影视8888在线观看大全免费 | 国产精品久久久久9999吃药 | 欧美日韩不卡一区 | 91人人在线 | 黄色在线免费观看网址 | 久久久久麻豆 | 国产精品久久久久久久久蜜臀 | 在线观看韩国av | 欧洲精品一区二区 | 国产亚洲欧美在线视频 | 亚洲精品777 | 久久伦理网 | 99色免费视频| 国产一级片不卡 | 成人网444ppp | 日韩av中文字幕在线免费观看 | 国产精品二区在线 | 久久精品伊人 | 久草在线一免费新视频 | 欧美日本一二三 | 国产又粗又猛又色又黄视频 | 99久久精品久久久久久清纯 | 深爱婷婷网 | 久久亚洲免费视频 | 亚洲国产欧洲综合997久久, | 天天干天天草天天爽 | 四虎影视成人永久免费观看亚洲欧美 | 91资源在线观看 | 2019国产精品 | 天天干 夜夜操 | 综合在线观看色 | 中文字幕日韩电影 | 中文在线免费视频 | 夜色资源站国产www在线视频 | 亚洲精品tv久久久久久久久久 | 99免费在线观看 | 天天天天天天天天操 | 日韩影视精品 | 中文字幕亚洲精品日韩 | 亚洲三级性片 | 国产精品一区二区在线观看免费 | 五月导航 | 人人插人人爱 | 黄色aa久久 | 日韩精品一区二区久久 | 久久久久久久久久久久久影院 | 亚洲免费观看视频 | 色网站免费在线观看 | 午夜精品一区二区三区可下载 | 国产字幕在线看 | 久久男人中文字幕资源站 | 玖玖在线视频观看 | 四虎影视av | 亚洲国产精选 | 久久在线观看视频 | 国产九色在线播放九色 | 日韩精品免费在线播放 | 成人久久久久久久久久 | 日本中文字幕免费观看 | 人操人| 精品综合久久久 | 国内精品免费 | 黄www在线观看 | 91看片在线免费观看 | 最近免费中文字幕 | 亚洲成av人片在线观看香蕉 | 国产精品免费看久久久8精臀av | 久久精品久久综合 | 福利一区二区在线 | 欧美日韩不卡在线 | 欧美国产不卡 | 国产原创在线视频 | 欧美日韩精品二区第二页 | 天天干天天射天天爽 | 精品一区二区av | 精品亚洲成a人在线观看 | 91亚洲成人 | 久久人人97超碰com | 99视频精品全国免费 | 狠狠色香婷婷久久亚洲精品 | 亚洲经典视频在线观看 | 米奇狠狠狠888 | 亚洲成人动漫在线观看 | 99精品视频一区二区 | 99亚洲精品 | 欧美做受高潮 | 精品视频不卡 | 国产网站在线免费观看 | 精品国产乱码一区二 | 日本精品二区 | 精品毛片久久久久久 | 97视频亚洲 | 久久无码精品一区二区三区 | 国产一级做a爱片久久毛片a | 九九精品久久久 | 97超碰免费| 在线中文字幕播放 | 午夜国产一区二区 | 中文字幕一区二区三区久久蜜桃 | 夜夜操天天干 | 国产精品中文字幕在线观看 | 成人天堂网 | av网站免费线看精品 | 蜜桃视频在线观看一区 | 国产中文在线字幕 | 亚洲一区二区精品在线 | 在线国产91 | 亚洲一区二区精品在线 | av中文字幕av| 激情婷婷六月 | 性色av免费观看 | 亚洲年轻女教师毛茸茸 | 国产一区二区三精品久久久无广告 | 日韩视频一区二区在线 | 超碰av在线免费观看 | 97精品国产一二三产区 | 五月激情久久 | 国产小视频免费在线网址 | 久久五月情影视 | 四虎永久免费 | 黄色资源在线观看 | 一区二区视频免费在线观看 | 国产精品成人av电影 | 黄色大全免费观看 | 欧美成人精品三级在线观看播放 | 99这里只有精品99 | 最新中文字幕在线观看视频 | 在线黄色免费 | 久久国产网 | 婷婷激情影院 | 中文字幕在线播放视频 | 激情小说久久 | 91av在线播放| 国偷自产视频一区二区久 | 国产成人精品免高潮在线观看 | av在线直接看 | 国模精品在线 | 黄色毛片视频免费观看中文 | 亚洲国产视频网站 | 久热香蕉视频 | 丁香激情综合 | 亚洲精品久久久久久久不卡四虎 | 日本精品一二区 | 国产色综合天天综合网 | 大荫蒂欧美视频另类xxxx | av在线电影网站 | 五月导航| 97超碰国产精品 | 中日韩男男gay无套 日韩精品一区二区三区高清免费 | 免费在线观看一级片 | 欧美成人999 | av在线小说 | 97在线观看免费视频 | 亚洲毛片一区二区三区 | 日韩成人在线一区二区 | 天天射天天干 | 99亚洲精品在线 | 日韩在线视频一区 | 久久大香线蕉app | 国产99久久精品一区二区300 | 久久成人久久 | 手机成人在线 | 亚洲有 在线 | 奇米影视777影音先锋 | 免费在线精品视频 | 亚洲高清在线观看视频 | 天天干天天干 | 亚洲天堂网在线视频观看 | 97国产大学生情侣白嫩酒店 | 国产免费一区二区三区网站免费 | 麻豆av电影| 精品久久久久久国产 | 99热99re6国产在线播放 | 国产在线高清 | 亚洲最大在线视频 | 成人中文字幕av | 日韩在线免费播放 | 最新午夜 | 色婷婷电影网 | 欧美激情综合五月色丁香 | 在线国产欧美 | 久久久www成人免费精品 | 国产亚洲欧美在线视频 | 99在线精品视频 | 精品欧美一区二区精品久久 | 在线观看免费91 | 精品自拍sae8—视频 | 最新免费中文字幕 | 99热高清| 日韩在线视频网址 | 99免费国产 | 精品不卡视频 | 九九视频精品免费 | 久草网站在线 | 久久久国产精品一区二区中文 | 色在线亚洲 | 亚洲精品国精品久久99热一 | 色综合狠狠干 | 在线综合 亚洲 欧美在线视频 | 日韩高清观看 | 激情av一区二区 | 91天堂素人约啪 | 少妇18xxxx性xxxx片 | 一区二区三区电影大全 | 黄色免费观看网址 | 黄色网在线播放 | 国产正在播放 | 99久高清在线观看视频99精品热在线观看视频 | 人人cao| 奇米影视在线99精品 | 国产精品欧美一区二区三区不卡 | av免费观看网址 | 国产手机在线 | 欧美激情精品久久 | 缴情综合网五月天 | 国产精品九九九九九 | 亚洲视频专区在线 | 国产麻豆果冻传媒在线观看 | 日韩av午夜| 久久呀| 黄色性av | 日韩高清 一区 | 成人午夜精品 | 中文av在线播放 | 亚洲成人资源网 | 国产精品精| 久久免费久久 | 成年人看片网站 | 国产一区二区在线精品 | 国产精品国产三级国产不产一地 | h视频在线看 | 欧美在线1 | 天天干天天做 | 成人毛片在线观看视频 | www.色五月.com | www.亚洲视频 | 国产精品完整版 | 亚洲视频大全 | 最新影院| 黄色成年片 | 成人免费观看在线视频 | 亚洲综合国产精品 | 69久久久 | 美女黄视频免费看 | 91成人免费观看视频 | 狠狠躁日日躁狂躁夜夜躁 | 黄色精品久久 | 五月天最新网址 | 国产精品白虎 | 国产高清视频在线 | 在线韩国电影免费观影完整版 | 一区二区三区在线观看中文字幕 | 中文不卡视频在线 | 精品国产1区2区3区 国产欧美精品在线观看 | 久久伊人国产精品 | 亚洲成免费 | 国产精品va最新国产精品视频 | 久久97久久 | 日韩高清无线码2023 | 99视频+国产日韩欧美 | 夜夜骑首页 | 欧美日本日韩aⅴ在线视频 插插插色综合 | www.午夜视频| 久久久久电影网站 | 亚洲va欧美 | 深爱激情五月网 | 免费碰碰| 国产欧美综合在线观看 | 国产麻豆视频在线观看 | 国产对白av | 日韩av高清 | 五月婷久 | 九九亚洲精品 | 免费的国产精品 | 欧美一级免费黄色片 | 日本久久高清视频 | 欧美成人aa | 国产美女精品人人做人人爽 | 一区二区三区国 | 久久久久久久久久久久av | 成人av片在线观看 | www.婷婷色| 国产一区网址 | zzijzzij日本成熟少妇 | 国产精品国产亚洲精品看不卡 | 国产另类xxxxhd高清 | 超碰激情在线 | 国产aaa大片| 国产精品永久久久久久久久久 | 欧美二区三区91 | www.av在线播放 | 中文字幕在线观看完整版电影 | 在线观看中文字幕网站 | 激情婷婷久久 | 久久99精品一区二区三区三区 | av电影中文字幕在线观看 | 国产精品一区二区在线观看 | 亚洲高清视频一区二区三区 | 国产91粉嫩白浆在线观看 | 在线小视频国产 | 亚洲精品美女久久久久 | 国产精品6| 91天天视频 | 成人久久 | 久久国产精品99久久久久 | 人人草网站 | 日韩在线视频二区 | 国产精品6999成人免费视频 | 日韩av午夜在线观看 | 国产精品久久久久免费观看 | 91成人区 | 久草在线网址 | 国产一区二区免费看 | av免费在线网站 | 中文字幕欧美日韩va免费视频 | 国产精品video爽爽爽爽 | 伊人久久在线观看 | 日韩91精品 | 亚洲欧洲国产视频 | www.久久色 | 黄色小说免费在线观看 | 福利视频| 欧美色伊人 | 国产精品久久久久免费观看 | 亚洲欧美日韩精品久久久 | 精品亚洲一区二区三区 | 91网在线看 | 久久综合九色综合97_ 久久久 | 精品高清视频 | 中文字幕第一页av | 日韩在线视频在线观看 | 91久久精品一区二区三区 | 国产精品久久久久影院 | 在线免费观看麻豆 | 久久久久日本精品一区二区三区 | 久久久久免费观看 | 色吊丝在线永久观看最新版本 | 波多野结衣一区二区三区中文字幕 | a色视频 | 久久综合在线 | 婷婷丁香九月 | 亚洲最大激情中文字幕 | 国产在线观看你懂得 | 国产精品99免费看 | 4p变态网欧美系列 | 久久久久久免费毛片精品 | 欧美久久精品 | 国产精品久久久久久模特 | av最新资源 | 日韩激情久久 | 婷婷成人综合 | 99热国产在线中文 | 国产精品免费av | 婷婷久久网站 | 欧美性生活小视频 | 三级av黄色| 99免费| 99re6热在线精品视频 | 免费视频久久久久 | 99久久精品免费看国产麻豆 | 国产精品久久久久婷婷二区次 | 国产999精品久久久影片官网 | 高清一区二区三区av | 尤物九九久久国产精品的分类 | 91精品1区2区 | 一区在线免费观看 | 国产成人精品午夜在线播放 | 日日干夜夜爱 | 激情文学综合丁香 | 欧美日韩免费观看一区=区三区 | 欧美日韩国产成人 | 中文字幕在 | 国产九九热 | 久久精品欧美日韩精品 | 天天要夜夜操 | 日韩精品一区二区三区视频播放 | 狠狠色综合欧美激情 | 国产精品入口66mio女同 | 国产精品手机在线观看 | 日韩另类在线 | 午夜性生活片 | adc在线观看 | 国产 欧美 在线 | 97高清视频 | 人人玩人人添人人澡超碰 | 少妇性色午夜淫片aaaze | 日韩在线电影一区 | 欧美成人免费在线 | 99免费看片 | 国产精品18毛片一区二区 | 黄色激情网址 | 黄色成人在线 | 国产一级91 | www免费 | 91精品在线视频 | 开心色婷婷 | 欧美日韩观看 | 婷婷六月中文字幕 | 91麻豆精品国产91久久久久 | 在线视频福利 | 日批视频国产 | 国产黄色在线网站 | 五月天视频网站 | 最近日韩中文字幕中文 | 国产精品青青 | 狠狠色丁香久久综合网 | 久久久国产网站 | 国产成人777777 | 欧美一级在线观看视频 | 精品国产视频在线 | 日韩二区三区在线 | 中文字幕乱码亚洲精品一区 | 欧美日韩高清免费 | 国产a级免费 | 成人在线电影观看 | 日韩精品一区二区三区丰满 | 久久人人爽人人片av | 久久视频免费在线 | 国产69精品久久久久99尤 | 日本久久中文 | 999久久久久 | 国内三级在线观看 | 操操操综合 | 亚洲丝袜中文 | 久久精品麻豆 | 人人爽爽人人 | 欧美不卡视频在线 | 久久人人爽人人片av | 天天玩天天干天天操 | 色综合久久中文综合久久牛 | 欧美精品在线观看免费 | 人人添人人澡人人澡人人人爽 | 国产精品免费人成网站 | 黄色美女免费网站 | av免费成人 | 久久伦理影院 | 四虎在线观看网址 | 国产高清在线视频 | 久久久久成人免费 | 91av在线免费观看 | 99视频免费播放 | 国产视频一区二区在线播放 | 中文字幕日本在线观看 | 国产精品一区二区三区四区在线观看 | 国产拍揄自揄精品视频麻豆 | 久久精品综合一区 | 日韩精品一区二区三区水蜜桃 | 日韩在线视频播放 | 韩国av免费在线 | 精品国产精品一区二区夜夜嗨 | 国产对白av | 免费成人在线观看 | 精品国自产在线观看 | 97爱| 国产精品一区二区三区在线免费观看 | 91av网址 | 国产伦精品一区二区三区照片91 | 涩涩网站在线看 | 一区二区不卡视频在线观看 | 欧美日韩精品影院 | 中文字幕中文中文字幕 | 成人久久久久久久久久 | 天天射天天搞 | 亚洲精品字幕在线观看 | 久久久久成人精品亚洲国产 | 久久一区国产 | 亚洲区二区 | 婷婷色视频 | 麻豆国产视频 | 久久综合狠狠综合久久综合88 | 成人中文字幕在线 | 精品福利视频在线观看 | 国产999免费视频 | 亚洲精品美女在线观看播放 | av福利在线| 黄色高清视频在线观看 | 日韩在线理论 | 五月婷婷色 | www免费网站在线观看 | 日韩欧美高清不卡 | 日韩视频一区二区三区在线播放免费观看 | 伊人久久国产精品 | 亚洲精品字幕在线 | 国产色拍拍拍拍在线精品 | 麻豆视频免费入口 | 欧美色就是色 | 国产精品99久久久久久宅男 | 日韩在线高清免费视频 | 视频一区亚洲 | 天天爽夜夜爽精品视频婷婷 | 国产精品欧美一区二区三区不卡 | 日韩免费一级a毛片在线播放一级 | 国产一级二级在线观看 | 国产精品久久久久久久久岛 | 成年人在线免费看片 | 日韩在线观看中文字幕 | 999久久a精品合区久久久 | 日韩欧美视频在线观看免费 | 国产精品观看在线亚洲人成网 | 久精品在线观看 | 日韩视频免费观看高清 | 成人av资源站 | 一级片观看| 免费毛片一区二区三区久久久 | 一级淫片在线观看 | 中文字幕最新精品 | av在线小说| 日韩区欧美久久久无人区 | 国产99久久久久久免费看 | 在线观看视频免费大全 | 高清免费av在线 | 中文字幕第一页在线播放 | 一区二区视频网站 | 成人午夜免费剧场 | 国产日韩欧美网站 | 欧美在线日韩在线 | 成人一级免费视频 | 特级黄色片免费看 | 久久日本视频 | 国产精品初高中精品久久 | 黄色在线观看免费网站 | 欧美老女人xx | 国产打女人屁股调教97 | 中文字幕超清在线免费 | 国产毛片久久 | 日韩性xxxx| 久久精品99久久久久久2456 | free,性欧美 九九交易行官网 | 黄色成人小视频 | 在线看日韩av | 国产精品色 | 亚洲精品国产精品国 | 超碰在线人人 | 国产精品一二 | 97香蕉久久国产在线观看 | 99热最新在线 | 91av精品 | 国内精品久久久久久久影视简单 | 国产99久久久精品 | 精品国产一区二区三区免费 | www.亚洲精品 | 亚洲午夜精品久久久久久久久久久久 | 婷婷色网站 | 成人欧美在线 | 热久久视久久精品18亚洲精品 | 免费91麻豆精品国产自产在线观看 | 久久久在线观看 | 美女黄色网在线播放 | 天天干夜夜爱 | 国产99久久久久 | 麻豆视频在线 | 日日夜夜天天 | 蜜臀久久99精品久久久久久网站 | 欧美精品视| 国产小视频在线播放 | 色妞色视频一区二区三区四区 | 亚洲精品乱码白浆高清久久久久久 | 亚洲激情电影在线 | 在线观看91精品国产网站 | 欧美特一级 | 日本精品免费看 | 二区三区中文字幕 | 欧美日韩国产一二三区 | 在线观看日韩 | 91精品资源 | 在线黄色观看 | 免费在线观看日韩视频 | 青青河边草手机免费 | 国产福利精品在线观看 | 国产精品18久久久久久久网站 | 亚洲激情综合网 | 成年人视频免费在线播放 | 天天爱天天插 | 激情婷婷av | 免费91在线观看 | 少妇bbb搡bbbb搡bbbb′ | jizz18欧美18| 天天摸天天弄 | 国产精品成人一区二区三区 | 西西444www| 综合久久五月天 | 色五月色开心色婷婷色丁香 | 亚洲无吗天堂 | 色综合久久中文字幕综合网 | 久久99国产精品自在自在app | 制服丝袜亚洲 | 精品亚洲欧美一区 | 天天操伊人| 亚洲欧美va | 一级黄网 | 欧美三级在线播放 | 成人va视频 | 亚洲精品国产精品国自产在线 | 免费在线观看av网址 | 成人av电影在线播放 | 欧美性生活久久 | 狠狠操电影网 | 在线中文字幕av观看 | www一起操 | 免费在线观看av的网站 | 欧美激情综合色综合啪啪五月 | 日日天天av| 69av免费视频 | 99这里只有精品视频 | 成人观看 | 色婷婷a| 亚洲精品午夜国产va久久成人 | 99高清视频有精品视频 | 久久夜色精品国产欧美一区麻豆 | 亚洲视频综合 | 欧美日韩视频一区二区 | 久久精品二区 | 天天操天天能 | 伊人天堂网 | 国产精品亚洲片在线播放 | 狠狠成人 | 午夜天使 | 久久精品国产免费看久久精品 | 国产精品久久久久一区二区三区共 | 亚洲,播放 | 黄色av电影一级片 | 国内精品视频一区二区三区八戒 | 久久久午夜精品福利内容 | 91av片 | 欧美片一区二区三区 | 日韩中文免费视频 | 2020天天干天天操 | 色综合久久88色综合天天免费 | av免费看在线 | 涩涩在线 | 狠狠色丁香婷婷综合久小说久 | 久久最新视频 | 日韩在线视频免费播放 | 欧美黄色成人 | 国产亚洲成av人片在线观看桃 | 91精品久久久久久综合五月天 | 中文字幕高清在线播放 | 9999精品 | 久久久精品成人 | 国产96在线视频 | 婷婷在线看 | 欧美日产在线观看 | 婷婷国产v亚洲v欧美久久 | 在线观看黄av | 狠狠干夜夜爽 | 人人草在线观看 | 国产精品国产三级国产专区53 | 亚洲黄色片在线 | 亚洲成人av电影在线 | 在线观看国产www | 2017狠狠干 | 天天操天天能 | 成人免费看片98欧美 | 中文字幕资源网 国产 | 久久久久久久久久毛片 | 欧美成人按摩 | 亚洲香蕉视频 | 国产精品精品视频 | 亚洲理论片在线观看 | 高清免费在线视频 | 亚洲欧美国产日韩在线观看 | 91色吧 | 国产黄色精品视频 | 亚洲伦理一区二区 | 久草综合在线 | 成人av免费在线观看 | 亚洲性xxxx | 在线综合 亚洲 欧美在线视频 | 91亚色视频在线观看 | www.狠狠干 | 香蕉视频4aa | 国产精品一区免费观看 | 五月婷婷六月丁香在线观看 | 69国产盗摄一区二区三区五区 | 国产中文伊人 | 亚洲激情 | 一区二区三区四区在线免费观看 | 国产在线最新 | 久久视频在线免费观看 | 免费激情在线电影 | 成 人 a v天堂 | 丁香六月久久综合狠狠色 | 国内丰满少妇猛烈精品播 | www久草| 免费观看性生活大片 | 欧美精品色 | 亚洲三级性片 | 精品久久一区 | 韩国av一区二区 | 欧美 日韩 国产 中文字幕 | 97成人在线视频 | 日韩一区二区三免费高清在线观看 | 综合天堂av久久久久久久 | 丁香婷婷激情国产高清秒播 | 天天干天天弄 | 青青河边草免费 | 日韩精品高清视频 | 欧美日本高清视频 | 极品久久久 | 欧美日韩国产一二三区 | 国产91综合一区在线观看 | 国产99久久精品 | 久久久久久久久久久久电影 | 中文在线中文资源 | 午夜三级理论 | 天堂在线一区二区 | 久久激情片 | 狠狠色丁香婷婷综合久久片 | 天天操天天干天天插 | 日韩免费视频观看 | 啪一啪在线 | 亚洲日本国产 | 午夜视频播放 | 在线观看播放av | 国产成人a亚洲精品 | 欧美成人精品xxx | 国产一区欧美日韩 | 黄色小说网站在线 | 韩国一区二区在线观看 | 99热精品国产 | 手机在线看永久av片免费 | 日韩久久精品一区二区 | 超碰97在线资源 | 丁香六月婷 | 色 中文字幕| 国产成人777777 | 亚洲欧洲一级 | 国产免费精彩视频 | 亚洲国产日韩一区 | 久草在线视频资源 | 在线观看视频h | 亚洲欧洲精品一区二区精品久久久 | 去看片 | 久久人人爽人人爽人人片 | 久久无码精品一区二区三区 | 成人av免费播放 | 高潮久久久久久久久 | 国产精品18久久久久久不卡孕妇 | 久草视频在线新免费 | av免费在线播放 | 亚洲国产一区二区精品专区 | 国产精品18久久久久久不卡孕妇 | 成人在线黄色 | 久草视频在线资源站 | 久久精品国产免费 | 国内丰满少妇猛烈精品播放 | 激情久久五月天 | 激情综合网色播五月 | 久久一视频 | 国产午夜一级毛片 | 亚洲欧洲一区二区在线观看 | 国产超碰在线观看 | 97在线影院 | 很污的网站 | 免费在线观看av不卡 | av一区二区三区在线 | 99在线播放 | 国产一级免费观看视频 | 美女视频国产 | aa级黄色大片 | 日韩av在线影视 | www激情网 | 中文字幕 欧美性 | 国产精品成人一区二区 | 九色在线视频 | 亚州性色| 最新国产精品视频 | 激情影院在线观看 | 在线观看视频免费大全 | 青青五月天 | 精品在线观看国产 | 狠狠干免费 | 成人一区在线观看 | 丁香六月久久综合狠狠色 | 手机在线看a | 国产精品成人久久久 | 久久高清片 | www国产亚洲精品久久网站 | 天天躁日日 | 国产免费不卡av | 国产精品国产三级国产专区53 | 中文字幕日韩av | 69久久久 | 久久国产精品99久久久久久老狼 | 久久一区二区三区四区 | 国产视频精品网 | 欧美成人亚洲 | 亚洲电影院 | 99精品偷拍视频一区二区三区 | 久久99婷婷 | 免费色视频网址 | 欧美一区二区三区特黄 | 亚洲日本成人网 | 粉嫩一区二区三区粉嫩91 | 91精品在线看 | 精品国产亚洲一区二区麻豆 | 中文字幕888 | 精品国产伦一区二区三区免费 | 久久高清片 | 黄色的视频网站 | 日本中文字幕免费观看 | 亚洲天天综合网 | 婷婷久久五月天 | 99婷婷| 日本在线观看视频一区 | 99成人免费视频 | 久99久精品 | 婷婷六月综合亚洲 | 婷婷网站天天婷婷网站 | 98涩涩国产露脸精品国产网 | 日韩在线播放视频 | 观看免费av| 一区在线观看 | 麻豆视频在线观看免费 | 久久99网| 99性视频 | 国产成人一区二区三区久久精品 | 亚洲影视九九影院在线观看 | 国产一区二区三区高清播放 | 一区二区三区四区久久 | 色wwww| 免费一级黄色 | 99久久精品国 | 国产精品 日韩精品 | 久久免费看av | 久久国产女人 | www.69xx| 精品久久久久久一区二区里番 | 手机在线日韩视频 | 国产成人a亚洲精品 | www成人av | 成年人在线播放视频 | 日韩精品字幕 | 日韩精选在线观看 | 狠狠干在线 | 久久免费观看少妇a级毛片 久久久久成人免费 | 婷婷在线不卡 | 在线免费性生活片 | 欧美亚洲精品一区 | 日韩高清观看 | 欧日韩在线 | 欧美性春潮 | 97在线观看 | 四虎在线观看网址 |