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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

安卓原生百度地图(5)导航和语音播报

發(fā)布時間:2023/12/29 综合教程 28 生活家
生活随笔 收集整理的這篇文章主要介紹了 安卓原生百度地图(5)导航和语音播报 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1、在AndroidManifest.xml文件加入配置權(quán)限

   <!-- 讀寫sd卡 -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <!-- 寫sd卡 -->
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.ACCESS_GPS"/>
    <!-- 獲取精確gps位置 -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <!-- 獲取粗略位置 -->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <!-- 允許程序訪問額外的定位提供者指令獲取模擬定位信息 -->
    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"/>
    <!-- 網(wǎng)絡(luò)鏈接 -->
    <uses-permission android:name="android.permission.INTERNET">
    </uses-permission>
    <!-- 獲取網(wǎng)絡(luò)狀態(tài) -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE">
    </uses-permission>
    <!-- 更改wifi連狀態(tài) -->
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
    <!-- 獲取wifi狀態(tài) -->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

2、在MainActivity的布局文件中加入導(dǎo)航按鈕

<Button
        android:id="@+id/btn_Navi"
        android:text="導(dǎo)航"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="110dp"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

3、下載導(dǎo)航的資源包一一加入到項目當(dāng)中(提取碼:k0il)

4、把下載好的com中的sdkdemo文件包,放到項目中java/com下(和之前的baidu、example文件包放在一起)

5、導(dǎo)入全部包后,在build.gradle文件中加入如下一段代碼

ndk {
            abiFilters "armeabi", "x86", "x86_64", "mips64", "mips"
        }

如下圖(記得點擊Android studio右上角的“Sync Now”同步):

6、附上MainActivity的代碼

package com.example.baidumap;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import android.Manifest;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import com.baidu.location.BDAbstractLocationListener;
import com.baidu.location.BDLocation;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.mapapi.CoordType;
import com.baidu.mapapi.SDKInitializer;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.BitmapDescriptor;
import com.baidu.mapapi.map.BitmapDescriptorFactory;
import com.baidu.mapapi.map.MapStatusUpdate;
import com.baidu.mapapi.map.MapStatusUpdateFactory;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.MarkerOptions;
import com.baidu.mapapi.map.MyLocationConfiguration;
import com.baidu.mapapi.map.MyLocationData;
import com.baidu.mapapi.map.OverlayOptions;
import com.baidu.mapapi.model.LatLng;
import com.baidu.mapapi.overlayutil.BikingRouteOverlay;
import com.baidu.mapapi.overlayutil.DrivingRouteOverlay;
import com.baidu.mapapi.overlayutil.MassTransitRouteOverlay;
import com.baidu.mapapi.overlayutil.TransitRouteOverlay;
import com.baidu.mapapi.overlayutil.WalkingRouteOverlay;
import com.baidu.mapapi.search.core.SearchResult;
import com.baidu.mapapi.search.route.BikingRoutePlanOption;
import com.baidu.mapapi.search.route.BikingRouteResult;
import com.baidu.mapapi.search.route.DrivingRoutePlanOption;
import com.baidu.mapapi.search.route.DrivingRouteResult;
import com.baidu.mapapi.search.route.IndoorRouteResult;
import com.baidu.mapapi.search.route.MassTransitRoutePlanOption;
import com.baidu.mapapi.search.route.MassTransitRouteResult;
import com.baidu.mapapi.search.route.OnGetRoutePlanResultListener;
import com.baidu.mapapi.search.route.PlanNode;
import com.baidu.mapapi.search.route.RoutePlanSearch;
import com.baidu.mapapi.search.route.TransitRoutePlanOption;
import com.baidu.mapapi.search.route.TransitRouteResult;
import com.baidu.mapapi.search.route.WalkingRoutePlanOption;
import com.baidu.mapapi.search.route.WalkingRouteResult;
import com.baidu.navisdk.adapter.BNRoutePlanNode;
import com.baidu.navisdk.adapter.BaiduNaviManagerFactory;
import com.baidu.navisdk.adapter.IBNRoutePlanManager;
import com.baidu.navisdk.adapter.IBNTTSManager;
import com.baidu.navisdk.adapter.IBaiduNaviManager;
import com.sdkdemo.NormalUtils;
import com.sdkdemo.newif.DemoGuideActivity;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity implements View.OnClickListener{
    private MapView mMapView = null;
    private BaiduMap mBaiduMap = null;

    private Context context;

    //定位相關(guān)
    private double mLatitude;
    private double mLongtitude;

    //方向傳感器
    private MyOrientationListener mMyOrientationListener;
    private float mCurrentX;
    //自定義圖標(biāo)
    private BitmapDescriptor mIconLocation;
    private LocationClient mLocationClient;
    public BDAbstractLocationListener myListener;
    private LatLng mLastLocationData;
    private boolean isFirstin = true;

    // 路線規(guī)劃相關(guān)
    private RoutePlanSearch mSearch = null;

    //導(dǎo)航相關(guān)
    private static final String APP_FOLDER_NAME = "MyBNDTSDK-Api";
    private String mSDCardPath = null;
    private static final String[] authBaseArr = {
            Manifest.permission.WRITE_EXTERNAL_STORAGE,
            Manifest.permission.ACCESS_FINE_LOCATION
    };
    private static final int authBaseRequestCode = 1;
    private boolean hasInitSuccess = false;
    static final String ROUTE_PLAN_NODE = "routePlanNode";
    private BNRoutePlanNode mStartNode = null;
    private LatLng mDestLocationData;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        SDKInitializer.initialize(getApplicationContext());
        setContentView(R.layout.activity_main);
        SDKInitializer.setCoordType(CoordType.BD09LL);
        this.context = this;
        mMapView = (MapView) findViewById(R.id.baiduMapView);
        //獲取地圖控件引用
        mBaiduMap = mMapView.getMap();
        initMyLocation();
        initPoutePlan();
        button();
        initLongClick();
        //初始化導(dǎo)航相關(guān)
        if(initDirs()){
            initNavi();
        }
    }
    protected void onStart() {
        super.onStart();
        //開啟定位
        mBaiduMap.setMyLocationEnabled(true);
        if (!mLocationClient.isStarted())
            mLocationClient.start();
        //開啟方向傳感器
        mMyOrientationListener.start();
    }
    @Override
    protected void onResume() {
        super.onResume();
        mMapView.onResume();
    }
    @Override
    protected void onPause() {
        super.onPause();
        mMapView.onPause();
    }
    @Override
    protected void onStop() {
        super.onStop();
        //停止定位
        mBaiduMap.setMyLocationEnabled(false);
        mLocationClient.stop();
        //停止方向傳感器
        mMyOrientationListener.stop();
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        mBaiduMap.setMyLocationEnabled(false);
        mMapView.onDestroy();
        mMapView = null;
        mSearch.destroy();
    }
    @Override
    public void onClick(View v) {
        SDKInitializer.initialize(getApplicationContext());
        switch (v.getId()) {
            case R.id.btn_Location: {
                centerToMyLocation(mLatitude, mLongtitude);
                break;
            }
            case R.id.btn_Plan: {
                Intent intent = new Intent(context,RoutePlanActivity.class);
                startActivityForResult(intent,0x11);
                break;
            }
            case R.id.btn_Navi:
                if(mDestLocationData == null){
                    Toast.makeText(context, "長按設(shè)置導(dǎo)航目標(biāo)地點", Toast.LENGTH_SHORT).show();
                    return;
                }
                routeplanToNavi();
                break;
        }
    }

    //按鈕響應(yīng)
    private void button() {
        //按鈕
        Button btn_Location = (Button) findViewById(R.id.btn_Location);
        Button btn_Plan = (Button) findViewById(R.id.btn_Plan);
        Button btn_Navi = (Button) findViewById(R.id.btn_Navi);
        //按鈕處理
        btn_Location.setOnClickListener(this);
        btn_Plan.setOnClickListener(this);
        btn_Navi.setOnClickListener(this);
    }

    //定位
    private class MyLocationListener extends BDAbstractLocationListener {
        @Override
        public void onReceiveLocation(BDLocation location) {
            //mapView 銷毀后不在處理新接收的位置
            if (location == null || mMapView == null){
                return;
            }
            MyLocationData locData = new MyLocationData.Builder()
                    .accuracy(location.getRadius())
                    // 此處設(shè)置開發(fā)者獲取到的方向信息,順時針0-360
                    .direction(mCurrentX).latitude(location.getLatitude())
                    .longitude(location.getLongitude()).build();
            mBaiduMap.setMyLocationData(locData);
            //設(shè)置自定義圖標(biāo)
            MyLocationConfiguration config = new
                    MyLocationConfiguration(
                    MyLocationConfiguration.LocationMode.NORMAL, true, mIconLocation);
            mBaiduMap.setMyLocationConfiguration(config);
            //更新經(jīng)緯度
            mLatitude = location.getLatitude();
            mLongtitude = location.getLongitude();
            //設(shè)置起點
            mLastLocationData = new LatLng(mLatitude, mLongtitude);
            if (isFirstin) {
                centerToMyLocation(location.getLatitude(), location.getLongitude());

                if (location.getLocType() == BDLocation.TypeGpsLocation) {
                    // GPS定位結(jié)果
                    Toast.makeText(context, "定位:"+location.getAddrStr(), Toast.LENGTH_SHORT).show();
                } else if (location.getLocType() == BDLocation.TypeNetWorkLocation) {
                    // 網(wǎng)絡(luò)定位結(jié)果
                    Toast.makeText(context, "定位:"+location.getAddrStr(), Toast.LENGTH_SHORT).show();
                } else if (location.getLocType() == BDLocation.TypeOffLineLocation) {
                    // 離線定位結(jié)果
                    Toast.makeText(context, "定位:"+location.getAddrStr(), Toast.LENGTH_SHORT).show();
                } else if (location.getLocType() == BDLocation.TypeServerError) {
                    Toast.makeText(context, "定位:服務(wù)器錯誤", Toast.LENGTH_SHORT).show();
                } else if (location.getLocType() == BDLocation.TypeNetWorkException) {
                    Toast.makeText(context, "定位:網(wǎng)絡(luò)錯誤", Toast.LENGTH_SHORT).show();
                } else if (location.getLocType() == BDLocation.TypeCriteriaException) {
                    Toast.makeText(context, "定位:手機模式錯誤,請檢查是否飛行", Toast.LENGTH_SHORT).show();
                }
                isFirstin = false;
            }
        }
    }
    //初始化定位
    private void initMyLocation() {
        //縮放地圖
        MapStatusUpdate msu = MapStatusUpdateFactory.zoomTo(15.0f);
        mBaiduMap.setMapStatus(msu);
        //開啟定位
        mBaiduMap.setMyLocationEnabled(true);
        //聲明LocationClient類
        mLocationClient = new LocationClient(this);
        //通過LocationClientOption設(shè)置LocationClient相關(guān)參數(shù)
        LocationClientOption option = new LocationClientOption();
        option.setOpenGps(true); // 打開gps
        option.setCoorType("bd09ll"); // 設(shè)置坐標(biāo)類型
        option.setIsNeedAddress(true);//設(shè)置是否需要地址信息
        option.setScanSpan(1000);
        //設(shè)置locationClientOption
        mLocationClient.setLocOption(option);
        myListener = new MyLocationListener();
        //注冊監(jiān)聽函數(shù)
        mLocationClient.registerLocationListener(myListener);
        //初始化圖標(biāo)
        mIconLocation = BitmapDescriptorFactory.fromResource(R.drawable.navi_map_gps);
        initOrientation();
        //開始定位
        mLocationClient.start();
    }
    //回到定位中心
    private void centerToMyLocation(double latitude, double longtitude) {
        mBaiduMap.clear();
        mLastLocationData = new LatLng(latitude, longtitude);
        MapStatusUpdate msu = MapStatusUpdateFactory.newLatLng(mLastLocationData);
        mBaiduMap.animateMapStatus(msu);
    }
    //傳感器
    private void initOrientation() {
        //傳感器
        mMyOrientationListener = new MyOrientationListener(context);
        mMyOrientationListener.setOnOrientationListener(new MyOrientationListener.OnOrientationListener() {
            @Override
            public void onOrientationChanged(float x) {
                mCurrentX = x;
            }
        });
    }

    //路線規(guī)劃初始化
    private void initPoutePlan() {
        mSearch = RoutePlanSearch.newInstance();
        mSearch.setOnGetRoutePlanResultListener(listener);
    }
    // 路線規(guī)劃模塊
    public OnGetRoutePlanResultListener listener = new OnGetRoutePlanResultListener() {
        @Override
        public void onGetWalkingRouteResult(WalkingRouteResult result) {
            if (result == null || result.error != SearchResult.ERRORNO.NO_ERROR) {
                Toast.makeText(MainActivity.this, "路線規(guī)劃:未找到結(jié)果,檢查輸入", Toast.LENGTH_SHORT).show();
                //禁止定位
                isFirstin = false;
            }
            assert result != null;
            if (result.error == SearchResult.ERRORNO.AMBIGUOUS_ROURE_ADDR) {
                // 起終點或途經(jīng)點地址有岐義,通過以下接口獲取建議查詢信息
                result.getSuggestAddrInfo();
                return;
            }
            if (result.error == SearchResult.ERRORNO.NO_ERROR) {
                mBaiduMap.clear();
                Toast.makeText(MainActivity.this, "路線規(guī)劃:搜索完成", Toast.LENGTH_SHORT).show();
                WalkingRouteOverlay overlay = new WalkingRouteOverlay(mBaiduMap);
                overlay.setData(result.getRouteLines().get(0));
                overlay.addToMap();
                overlay.zoomToSpan();
            }
            //禁止定位
            isFirstin = false;
        }
        @Override
        public void onGetTransitRouteResult(TransitRouteResult result) {
            if (result == null || result.error != SearchResult.ERRORNO.NO_ERROR) {
                Toast.makeText(MainActivity.this, "路線規(guī)劃:未找到結(jié)果,檢查輸入", Toast.LENGTH_SHORT).show();
                //禁止定位
                isFirstin = false;
            }
            assert result != null;
            if (result.error == SearchResult.ERRORNO.AMBIGUOUS_ROURE_ADDR) {
                // 起終點或途經(jīng)點地址有岐義,通過以下接口獲取建議查詢信息
                result.getSuggestAddrInfo();
                return;
            }
            if (result.error == SearchResult.ERRORNO.NO_ERROR) {
                mBaiduMap.clear();
                Toast.makeText(MainActivity.this, "路線規(guī)劃:搜索完成", Toast.LENGTH_SHORT).show();
                TransitRouteOverlay overlay = new TransitRouteOverlay(mBaiduMap);
                overlay.setData(result.getRouteLines().get(0));
                overlay.addToMap();
                overlay.zoomToSpan();
            }
            //禁止定位
            isFirstin = false;
        }
        @Override
        public void onGetMassTransitRouteResult(MassTransitRouteResult result) {
            if (result == null || result.error != SearchResult.ERRORNO.NO_ERROR) {
                Toast.makeText(MainActivity.this, "路線規(guī)劃:未找到結(jié)果,檢查輸入", Toast.LENGTH_SHORT).show();
                //禁止定位
                isFirstin = false;
            }
            assert result != null;
            if (result.error == SearchResult.ERRORNO.AMBIGUOUS_ROURE_ADDR) {
                // 起終點或途經(jīng)點地址有岐義,通過以下接口獲取建議查詢信息
                result.getSuggestAddrInfo();
                return;
            }
            if (result.error == SearchResult.ERRORNO.NO_ERROR) {
                mBaiduMap.clear();
                Toast.makeText(MainActivity.this, "路線規(guī)劃:搜索完成", Toast.LENGTH_SHORT).show();
                MassTransitRouteOverlay overlay = new MassTransitRouteOverlay(mBaiduMap);
                overlay.setData(result.getRouteLines().get(0));
                overlay.addToMap();
                overlay.zoomToSpan();
            }
            //禁止定位
            isFirstin = false;
        }
        @Override
        public void onGetDrivingRouteResult(DrivingRouteResult result) {
            if (result == null || result.error != SearchResult.ERRORNO.NO_ERROR) {
                Toast.makeText(MainActivity.this, "路線規(guī)劃:未找到結(jié)果,檢查輸入", Toast.LENGTH_SHORT).show();
                //禁止定位
                isFirstin = false;
            }
            assert result != null;
            if (result.error == SearchResult.ERRORNO.AMBIGUOUS_ROURE_ADDR) {
                // 起終點或途經(jīng)點地址有岐義,通過以下接口獲取建議查詢信息
                result.getSuggestAddrInfo();
                return;
            }
            if (result.error == SearchResult.ERRORNO.NO_ERROR) {
                mBaiduMap.clear();
                Toast.makeText(MainActivity.this, "路線規(guī)劃:搜索完成", Toast.LENGTH_SHORT).show();
                DrivingRouteOverlay overlay = new DrivingRouteOverlay(mBaiduMap);
                overlay.setData(result.getRouteLines().get(0));
                overlay.addToMap();
                overlay.zoomToSpan();
            }
            //禁止定位
            isFirstin = false;
        }
        @Override
        public void onGetIndoorRouteResult(IndoorRouteResult var1) {
        }
        @Override
        public void onGetBikingRouteResult(BikingRouteResult result) {
            if (result == null || result.error != SearchResult.ERRORNO.NO_ERROR) {
                Toast.makeText(MainActivity.this, "路線規(guī)劃:未找到結(jié)果,檢查輸入", Toast.LENGTH_SHORT).show();
                //禁止定位
                isFirstin = false;
            }
            assert result != null;
            if (result.error == SearchResult.ERRORNO.AMBIGUOUS_ROURE_ADDR) {
                // 起終點或途經(jīng)點地址有岐義,通過以下接口獲取建議查詢信息
                result.getSuggestAddrInfo();
                return;
            }
            if (result.error == SearchResult.ERRORNO.NO_ERROR) {
                mBaiduMap.clear();
                Toast.makeText(MainActivity.this, "路線規(guī)劃:搜索完成", Toast.LENGTH_SHORT).show();
                BikingRouteOverlay overlay = new BikingRouteOverlay(mBaiduMap);
                overlay.setData(result.getRouteLines().get(0));
                overlay.addToMap();
                overlay.zoomToSpan();
            }
            //禁止定位
            isFirstin = false;
        }
    };
    //開始規(guī)劃
    private void StarRoute(int id,ArrayList list) {
        SDKInitializer.initialize(getApplicationContext());
        //經(jīng)緯度規(guī)劃路線和動態(tài)輸入規(guī)劃路線二選一

        // 設(shè)置起、終點信息 動態(tài)輸入規(guī)劃路線
        PlanNode stNode = PlanNode.withCityNameAndPlaceName(list.get(0).toString(), list.get(1).toString());
        PlanNode enNode = PlanNode.withCityNameAndPlaceName(list.get(2).toString(), list.get(3).toString());


        //經(jīng)緯度規(guī)劃路線
//        LatLng startPoint = new LatLng(39.917380, 116.37978);
//        LatLng endPoint = new LatLng(22.27503, 113.523431);
//        PlanNode stNode = PlanNode.withLocation(startPoint);
//        PlanNode enNode = PlanNode.withLocation(endPoint);

       switch (id){
           case 1:
               mSearch.drivingSearch((new DrivingRoutePlanOption()).from(stNode).to(enNode));
               break;
           case 2:
               if(list.get(0).toString() == list.get(2).toString()){
                   mSearch.transitSearch((new TransitRoutePlanOption()).from(stNode).to(enNode));
               }else{
                   mSearch.masstransitSearch((new MassTransitRoutePlanOption()).from(stNode).to(enNode));
               }
               break;
               default:break;

       }
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(requestCode == 0x11){
            ArrayList address = data.getCharSequenceArrayListExtra("address");
            StarRoute(resultCode,address);
        }
    }

    //導(dǎo)航 ----獲取Sdcard目錄
    private String getSdcardDir() {
        if (Environment.getExternalStorageState().equalsIgnoreCase(Environment.MEDIA_MOUNTED)) {
            return Environment.getExternalStorageDirectory().toString();
        }
        return null;
    }
    //初始化導(dǎo)航目錄
    private boolean initDirs() {
        mSDCardPath = getSdcardDir();
        if (mSDCardPath == null) {
            return false;
        }
        File f = new File(mSDCardPath, APP_FOLDER_NAME);
        if (!f.exists()) {
            try {
                f.mkdir();
            } catch (Exception e) {
                e.printStackTrace();
                return false;
            }
        }
        return true;
    }
    private boolean hasBasePhoneAuth() {
        PackageManager pm = this.getPackageManager();
        for (String auth : authBaseArr) {
            if (pm.checkPermission(auth, this.getPackageName()) != PackageManager.PERMISSION_GRANTED) {
                return false;
            }
        }
        return true;
    }
    //初始化語音播報
    private void initTTS() {
        // 使用內(nèi)置TTS
        BaiduNaviManagerFactory.getTTSManager().initTTS(getApplicationContext(),
                getSdcardDir(), APP_FOLDER_NAME, NormalUtils.getTTSAppID());

        // 注冊同步內(nèi)置tts狀態(tài)回調(diào)
        BaiduNaviManagerFactory.getTTSManager().setOnTTSStateChangedListener(
                new IBNTTSManager.IOnTTSPlayStateChangedListener() {
                    @Override
                    public void onPlayStart() {
                        Log.e("BNSDKDemo", "ttsCallback.onPlayStart");
                    }

                    @Override
                    public void onPlayEnd(String speechId) {
                        Log.e("BNSDKDemo", "ttsCallback.onPlayEnd");
                    }

                    @Override
                    public void onPlayError(int code, String message) {
                        Log.e("BNSDKDemo", "ttsCallback.onPlayError");
                    }
                }
        );
        // 注冊內(nèi)置tts 異步狀態(tài)消息
        BaiduNaviManagerFactory.getTTSManager().setOnTTSStateChangedHandler(
                new Handler(Looper.getMainLooper()) {
                    @Override
                    public void handleMessage(Message msg) {
                        Log.e("BNSDKDemo", "ttsHandler.msg.what=" + msg.what);
                    }
                }
        );
    }
    //初始化導(dǎo)航
    private void initNavi() {
        // 申請權(quán)限
        if (android.os.Build.VERSION.SDK_INT >= 23) {
            if (!hasBasePhoneAuth()) {
                this.requestPermissions(authBaseArr, authBaseRequestCode);
                return;
            }
        }

        BaiduNaviManagerFactory.getBaiduNaviManager().init(this, mSDCardPath, APP_FOLDER_NAME, new IBaiduNaviManager.INaviInitListener() {
                    @Override
                    public void onAuthResult(int status, String msg) {
                        String result;
                        if (0 == status) {
                            result = "key校驗成功!";
                        } else {
                            result = "key校驗失敗, " + msg;
                        }
                        Toast.makeText(MainActivity.this, result, Toast.LENGTH_LONG).show();
                    }

                    @Override
                    public void initStart() {
                        Toast.makeText(MainActivity.this, "導(dǎo)航引擎初始化開始", Toast.LENGTH_SHORT).show();
                    }

                    @Override
                    public void initSuccess() {
                        Toast.makeText(MainActivity.this, "導(dǎo)航引擎初始化成功", Toast.LENGTH_SHORT).show();
                        hasInitSuccess = true;
                        // 初始化tts
                        initTTS();
                    }

                    @Override
                    public void initFailed() {
                        Toast.makeText(MainActivity.this, "導(dǎo)航引擎初始化失敗", Toast.LENGTH_SHORT).show();
                    }
                });

    }
    //添加導(dǎo)航目的地圖標(biāo)
    private void addDestInfoOverlay(LatLng latLng) {
        mBaiduMap.clear();
        OverlayOptions options = new MarkerOptions().position(latLng)
                .icon(BitmapDescriptorFactory.fromResource(R.drawable.icon_geo))
                .zIndex(5);
        mBaiduMap.addOverlay(options);
    }
    //坐標(biāo)轉(zhuǎn)換
    public static BDLocation bd2gcj(BDLocation loc) {
        return LocationClient.getBDLocationInCoorType(loc,BDLocation.BDLOCATION_BD09LL_TO_GCJ02);
    }
    //導(dǎo)航算路
    private void routeplanToNavi() {

        final int coType = BNRoutePlanNode.CoordinateType.GCJ02;
        if (!hasInitSuccess) {
            Toast.makeText(MainActivity.this, "還未初始化!", Toast.LENGTH_SHORT).show();
        }

        BDLocation srcBdLocation = new BDLocation();
        srcBdLocation.setLatitude(mLastLocationData.latitude);
        srcBdLocation.setLongitude(mLastLocationData.longitude);
        BDLocation srcGcj = bd2gcj(srcBdLocation);
        BDLocation destBdLocation = new BDLocation();
        destBdLocation.setLatitude(mDestLocationData.latitude);
        destBdLocation.setLongitude(mDestLocationData.longitude);
        BDLocation destGcj = bd2gcj(destBdLocation);

        BNRoutePlanNode sNode = new BNRoutePlanNode(srcGcj.getLongitude(),srcGcj.getLatitude(),"我的地點",null,coType);
        BNRoutePlanNode eNode = new BNRoutePlanNode(destGcj.getLongitude(),destGcj.getLatitude(),"目標(biāo)地點",null,coType);

        mStartNode = sNode;

        List<BNRoutePlanNode> list = new ArrayList<>();
        list.add(sNode);
        list.add(eNode);


        BaiduNaviManagerFactory.getRoutePlanManager().routeplanToNavi(list,
                IBNRoutePlanManager.RoutePlanPreference.ROUTE_PLAN_PREFERENCE_DEFAULT,
                null,
                new Handler(Looper.getMainLooper()) {
                    @Override
                    public void handleMessage(Message msg) {
                        switch (msg.what) {
                            case IBNRoutePlanManager.MSG_NAVI_ROUTE_PLAN_START:
                                Toast.makeText(MainActivity.this, "導(dǎo)航:算路開始", Toast.LENGTH_SHORT)
                                        .show();
                                break;
                            case IBNRoutePlanManager.MSG_NAVI_ROUTE_PLAN_SUCCESS:
                                Toast.makeText(MainActivity.this, "導(dǎo)航:算路成功", Toast.LENGTH_SHORT)
                                        .show();
                                break;
                            case IBNRoutePlanManager.MSG_NAVI_ROUTE_PLAN_FAILED:
                                Toast.makeText(MainActivity.this, "導(dǎo)航:算路失敗", Toast.LENGTH_SHORT)
                                        .show();
                                break;
                            case IBNRoutePlanManager.MSG_NAVI_ROUTE_PLAN_TO_NAVI:
                                Toast.makeText(MainActivity.this, "導(dǎo)航:算路成功準(zhǔn)備進(jìn)入導(dǎo)航", Toast.LENGTH_SHORT)
                                        .show();
                                Intent intent = new Intent(MainActivity.this,
                                        DemoGuideActivity.class);
                                Bundle bundle = new Bundle();
                                bundle.putSerializable(ROUTE_PLAN_NODE, mStartNode);
                                intent.putExtras(bundle);
                                startActivity(intent);
                                break;
                            default:
                                // nothing
                                break;
                        }
                    }
                });
    }
    //長按處理
    private void initLongClick() {
        mBaiduMap.setOnMapLongClickListener(new BaiduMap.OnMapLongClickListener() {
            @Override
            public void onMapLongClick(LatLng latLng) {
                Toast.makeText(context,"導(dǎo)航:設(shè)置目的地成功", Toast.LENGTH_LONG).show();
                mDestLocationData = latLng;
                addDestInfoOverlay(latLng);
            }
        });
    }
}

7、在AndroidManifest.xml中聲明定位的activity組件

<activity android:name="com.sdkdemo.newif.DemoGuideActivity"/>
<activity android:name="com.sdkdemo.liteapp.LiteActivity"/>

8、加上語音播報導(dǎo)航路線(點擊跳轉(zhuǎn)到語音創(chuàng)建地址):

1.找到語音技術(shù)或者語音識別(點擊創(chuàng)建應(yīng)用)

2.填上必填的,包名寫自個的包名

3.進(jìn)入應(yīng)用管理或進(jìn)入語音技術(shù)-應(yīng)用列表

4.復(fù)制AppId到MainActivity找到初始化語音播報那段代碼(按住Ctrl+鼠標(biāo)鍵跳轉(zhuǎn)到NormalUtils類下)

5.把剛才復(fù)制的APPId放到返回的return中

9、啟動項目(這是用手機啟動的項目,用模擬器可能會出現(xiàn)閃退)

10、啟動的過程中可能會出現(xiàn)一個錯誤,有一個.os沒找到

1.在build.gradle去掉主動導(dǎo)入jniLibs文件包(記得點擊右上角的“Sync Now”同步)

2.下載一個jniLibs文件包(在之前下載的百度地圖資源包中包含jniLibs包),點擊獲取(提取碼:urgy)

3.把jniLibs文件復(fù)制到項目中main文件下

11、附上項目代碼(點擊獲取,提取碼:le4c),下載下來的項目可能會出現(xiàn)缺少KEY的錯誤

總結(jié)

以上是生活随笔為你收集整理的安卓原生百度地图(5)导航和语音播报的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

五月婷香 | 2022国产精品视频 | 久久综合丁香 | 日韩在线观看精品 | 狠狠的日日 | 亚洲欧美一区二区三区孕妇写真 | 嫩模bbw搡bbbb搡bbbb | 香蕉在线视频播放网站 | 视频国产精品 | 国产97免费| 草久在线 | 欧美人zozo | 久香蕉 | 四虎成人免费影院 | 日韩视频www | 亚洲综合在线观看视频 | 首页国产精品 | 国产精品美女免费看 | 日韩美女一级片 | 久久激情精品 | 黄色软件在线观看视频 | 国产成人99av超碰超爽 | 亚洲精品黄色 | 公开超碰在线 | 日韩欧美一区二区三区在线 | 久久免费久久 | 在线观看黄色免费视频 | 国产成人精品av | 国产1区2区| 麻豆视频在线免费观看 | 亚洲砖区区免费 | 日本高清久久久 | 国产高清99| 国产美腿白丝袜足在线av | 日韩精品久久一区二区三区 | 亚洲欧美日韩国产一区二区 | 手机成人免费视频 | 97在线观视频免费观看 | 色99在线 | 国产精品一区久久久久 | 国产午夜精品免费一区二区三区视频 | 性色av一区二区三区在线观看 | 少妇按摩av | 亚洲最大免费成人网 | 国产青草视频在线观看 | 五月婷婷一区二区三区 | 欧美日韩在线观看一区 | 蜜臀一区二区三区精品免费视频 | 免费在线观看黄 | 亚洲2019精品 | 黄色午夜网站 | 欧美精品乱码久久久久 | 国产特级毛片aaaaaaa高清 | 日韩中文字幕91 | 精品久久久久久久久久久院品网 | 草久在线播放 | 国产99久久久国产精品成人免费 | 亚洲精品国偷拍自产在线观看 | 国产精品不卡在线播放 | 国产一级不卡视频 | 欧美激情综合色综合啪啪五月 | 毛片美女网站 | 夜夜夜夜操 | 精品国产精品久久 | 国产免码va在线观看免费 | 在线免费黄色毛片 | 国产成本人视频在线观看 | 国内精品视频在线 | 亚洲最大在线视频 | 亚洲黄色成人 | 久草视频99 | 国产一区电影在线观看 | 在线精品观看 | 国产精品乱码久久久 | 久久久久久久久黄色 | 手机av观看 | 精品嫩模福利一区二区蜜臀 | 色午夜影院 | 亚洲精品理论 | 午夜av网站 | 欧美日韩一区三区 | 日日干天夜夜 | 日日日爽爽爽 | 国产手机视频在线观看 | 亚洲永久精品在线观看 | 欧美午夜性 | 久久毛片网 | 欧美一级片播放 | 欧美激情在线网站 | 黄色在线观看免费网站 | 夜夜夜精品 | 国产aa免费视频 | 91在线视频观看 | 色综合天天天天做夜夜夜夜做 | 久久久久9999亚洲精品 | 国产精品久久一区二区三区不卡 | 国产欧美日韩视频 | 久久视频在线观看 | 亚洲第一中文网 | 欧美性春潮 | 国产精品乱码在线 | 欧洲av不卡 | 国际精品久久久 | 精品国产视频在线观看 | 久久久久成人精品亚洲国产 | 精品福利片 | 日韩激情在线 | 国产探花| 一区二区欧美日韩 | 国产精品免费久久久久久久久久中文 | 天天爽夜夜爽精品视频婷婷 | 国产一级淫片免费看 | 成人毛片久久 | 粉嫩aⅴ一区二区三区 | 激情综合电影网 | 亚洲天天干 | 视频在线观看入口黄最新永久免费国产 | 播五月婷婷 | 全久久久久久久久久久电影 | 国产日本高清 | 一区二区三区四区五区在线 | 久久精品香蕉 | 日韩一二三区不卡 | 国产在线观看午夜 | 亚洲日本va午夜在线影院 | 成年人免费观看国产 | 五月婷婷激情综合 | 成年人网站免费观看 | 国产精品久久久久毛片大屁完整版 | 国产精品去看片 | 国产精品理论在线观看 | 精品久久久久久国产91 | 亚洲精品午夜久久久久久久久久久 | 中文字幕第一页在线 | 欧美在线aaa| av免费网页 | 九九日韩 | 午夜视频在线观看一区二区三区 | 在线a亚洲视频播放在线观看 | 中文理论片 | 亚洲欧美日韩一二三区 | 99热在线免费观看 | 一区二区三区四区五区在线视频 | av性在线| 在线观看一区二区视频 | 日本少妇高清做爰视频 | 在线精品视频免费观看 | 8x成人免费视频 | 天天曰视频 | 国产1区在线观看 | 91av视频在线播放 | 最近中文字幕mv免费高清在线 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 国产精品美女久久久 | 日本少妇高清做爰视频 | 国产成人精品一二三区 | www欧美xxxx| 国产品久精国精产拍 | 婷婷六月在线 | 97超碰在线视 | 婷婷色资源 | 国产美女免费视频 | 在线观看韩日电影免费 | 99r在线视频 | 一区电影 | 免费视频国产 | 国产亚洲午夜高清国产拍精品 | 探花视频免费观看高清视频 | 欧美在线视频a | 亚州欧美视频 | 中文字幕精品三级久久久 | 成人免费在线播放视频 | 国产高清在线a视频大全 | 久久精品一区二 | 亚洲全部视频 | 国产专区视频在线 | 波多野结衣电影一区 | 亚洲精品18日本一区app | 中文字幕在线观看第一页 | 欧美性色网站 | 黄色免费网站 | 97视频一区 | 六月丁香婷 | 日韩激情片在线观看 | 国产原创中文在线 | 国产午夜视频在线观看 | 亚洲天堂视频在线 | 国产成人免费在线观看 | 欧美午夜性生活 | 日本韩国精品一区二区在线观看 | 成 人 黄 色 视频 免费观看 | 黄污网| 2021国产在线 | 国产原创av在线 | 色偷偷中文字幕 | 中文字幕乱在线伦视频中文字幕乱码在线 | a天堂一码二码专区 | 日本三级全黄少妇三2023 | 欧美日韩中文在线 | 欧美精品一区二区三区一线天视频 | 日本特黄一级 | 欧美性色综合网站 | 欧美日韩国产一区 | 成年人网站免费观看 | 精品国产a | 91在线免费播放 | 中文字幕欧美激情 | 日日操夜夜操狠狠操 | 成人免费在线播放 | 色视频国产直接看 | 在线免费高清一区二区三区 | 免费观看完整版无人区 | 日日夜夜免费精品视频 | 国产亚洲精品久久久久久无几年桃 | 丁香午夜婷婷 | 在线观看91av | 顶级bbw搡bbbb搡bbbb | 亚洲成人一区 | 国产一区二区网址 | 精品一区中文字幕 | 一级性av | 一区二区三区动漫 | 91污污视频在线观看 | 69国产成人综合久久精品欧美 | 2019中文| 在线观看亚洲电影 | 欧美日韩在线观看一区二区 | 又爽又黄又无遮挡网站动态图 | 成人黄色小说视频 | 免费看黄网站在线 | 99热免费在线 | 国产五十路毛片 | av资源免费看 | 久久综合五月天婷婷伊人 | 夜夜视频 | 国产精品大片在线观看 | 91av原创| 在线中文字幕av观看 | 91精品国产91久久久久久三级 | 91x色| 91在线日本| 亚洲美女视频在线 | 精品字幕 | 国产免费观看久久 | 午夜天使| 免费又黄又爽 | 午夜影视av | 91精品国产一区二区在线观看 | 久久综合精品国产一区二区三区 | 成人国产精品久久久 | 国产高清视频在线观看 | 欧美一区日韩一区 | 99精品在线免费观看 | 国内久久久 | 欧美一级视频在线观看 | 毛片网站免费在线观看 | 国产亚洲精品久久久久久 | 色诱亚洲精品久久久久久 | 手机在线欧美 | 亚洲毛片久久 | av高清免费 | 99精品国产aⅴ | 精品免费久久久久 | 夜夜躁天天躁很躁波 | 日韩免费观看一区二区 | 在线a人片免费观看视频 | 久久精品免费播放 | 中文字幕观看av | 午夜性盈盈 | 久久精品美女视频 | 91精品人成在线观看 | 亚洲自拍偷拍色图 | 久久久久一区 | 四虎在线视频 | 亚洲精品国偷自产在线91正片 | 国产夫妻av在线 | 丁香花在线视频观看免费 | 一级黄色片在线 | 免费在线色视频 | 日韩精品三区四区 | 免费一级片观看 | 久久超碰免费 | 国产精品k频道 | 中文字幕在线免费观看 | 91久久黄色 | 国产精品av在线免费观看 | 中文网丁香综合网 | 中文字幕 国产专区 | 三级黄在线 | 99九九免费视频 | 久久影院中文字幕 | av播放在线 | 91九色网站 | 97av视频在线观看 | 国产精品毛片久久蜜 | 狠狠色丁香婷婷综合 | 久久精品麻豆 | 成人在线视频一区 | 免费a视频在线 | 深爱激情五月综合 | 五月激情丁香婷婷 | 免费a视频在线 | 欧美精品午夜 | 日韩中文字幕免费看 | 国产午夜精品免费一区二区三区视频 | 欧美一级视频一区 | 黄色在线网站噜噜噜 | 亚洲天堂毛片 | 久久手机在线视频 | 欧美精品在线观看 | 亚洲国产精品成人综合 | av中文字幕不卡 | 久久综合色8888 | 欧美综合在线视频 | 精品二区视频 | 在线观看一区二区精品 | 91完整版在线观看 | 亚洲91av | 超碰在线资源 | 91在线视频免费播放 | 97视频免费观看 | 黄色毛片视频免费 | 日本亚洲国产 | 精品福利在线视频 | 日本中文字幕在线电影 | 色婷婷色 | 久久午夜色播影院免费高清 | 久久国产品 | 日本黄区免费视频观看 | 免费又黄又爽的视频 | 成人免费观看a | 久久久国产精品免费 | 99九九免费视频 | 欧美大片第1页 | 日韩在线电影一区二区 | 一区二区精品在线视频 | 天堂网av 在线 | 久久不射电影院 | 久久久国产在线视频 | 高清色免费 | 久久久精品欧美一区二区免费 | 国产精品九九九九九九 | 国产在线精品福利 | 韩国av在线 | 国产精品一区二区三区在线播放 | 日韩乱色精品一区二区 | 免费看精品久久片 | 国产精品免费麻豆入口 | 一区二区三区在线视频111 | 天天干天天操人体 | 久青草国产在线 | 国产精品永久免费在线 | 日韩av线观看 | 中文字幕无吗 | aav在线| 五月婷在线视频 | 欧美精品久久久久久久久久久 | 毛片在线播放网址 | 美女视频黄的免费的 | 深夜成人av | 9999免费视频 | 日本久久片 | 黄色精品一区 | 97在线视频免费看 | 亚洲精品国产精品国 | av在线免费播放 | av中文字幕在线免费观看 | 日韩免费久久 | 免费在线观看中文字幕 | 激情网在线视频 | 天天操狠狠操网站 | 人人爱人人添 | 日本天天操 | 99热在线国产 | 亚洲国产人午在线一二区 | 又黄又爽的视频在线观看网站 | 中文字幕在线观看国产 | 久久1电影院 | av在线一| 91精品网站在线观看 | 久久久免费视频播放 | 丰满少妇麻豆av | 黄色网www| 日韩xxxxxxxxx | 欧美午夜a | 亚洲午夜精品在线观看 | 国产精品99蜜臀久久不卡二区 | 久av电影| 午夜久草 | 久久久久久中文字幕 | 西西4444www大胆无视频 | 99精品欧美一区二区 | 久久精品久久精品久久39 | 狠狠躁日日躁狂躁夜夜躁av | 国产aaa大片 | 国产精品18久久久久久首页狼 | 五月亚洲婷婷 | 国产精品麻豆视频 | 韩国av一区二区三区在线观看 | 欧美片网站yy | av中文字幕免费在线观看 | 日本99精品 | 日韩在线观看视频免费 | zzijzzij亚洲日本少妇熟睡 | 四虎在线永久免费观看 | 国产系列精品av | 操综合 | 色中色亚洲 | 成人在线免费看视频 | 久久久久国 | 日韩 在线 | 亚洲视频免费视频 | 伊人干综合 | 色婷婷电影 | 特级西西人体444是什么意思 | 狠狠狠色丁香综合久久天下网 | 久久久香蕉视频 | 夜夜天天干| 99久久精品国产亚洲 | 亚洲永久字幕 | 国产麻豆果冻传媒在线观看 | 黄色小视频在线观看免费 | www蜜桃视频 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 337p日本欧洲亚洲大胆裸体艺术 | 91中文字幕在线视频 | 欧美日韩国内在线 | 久久字幕精品一区 | 一区二区在线电影 | 亚洲国产69| 热re99久久精品国产66热 | 国产亚洲精品久 | 国产 日韩 欧美 中文 在线播放 | 欧美精品二 | 色婷婷av国产精品 | 天天艹天天爽 | 亚洲人久久 | 国产精品色婷婷 | 成年人视频在线 | 五月天综合 | 在线你懂的视频 | 久久国产精品色婷婷 | 亚洲精品午夜aaa久久久 | 色窝资源 | 最近高清中文字幕在线国语5 | 色婷婷电影网 | 韩日电影在线 | 欧美性一级观看 | 免费看黄的视频 | 人人爽人人av| 在线中文字幕播放 | 久久久久久久毛片 | 97在线观看免费高清完整版在线观看 | 日韩二区三区在线 | 日本久久电影网 | 国产高清在线视频 | 日韩在线高清免费视频 | 美女视频a美女大全免费下载蜜臀 | 婷婷激情网站 | 日韩黄色中文字幕 | 在线99 | 97超级碰碰 | 国产精品涩涩屋www在线观看 | 精品国产色| 久久久午夜精品理论片中文字幕 | 婷婷日日 | 91精品国产91久久久久久三级 | 国产性天天综合网 | 欧美精品久久99 | 99热99re6国产在线播放 | 插插插色综合 | 亚洲婷婷在线 | 国产拍揄自揄精品视频麻豆 | 13日本xxxxxⅹxxx20 | 最新超碰在线 | 欧美日韩国产精品一区 | 久久久国产影视 | 久久久免费精品 | 黄色av一级 | 亚洲伊人成综合网 | 欧美日韩久久一区 | 午夜精品久久久久久久99热影院 | 一区二区在线电影 | 日一日操一操 | 国产精品麻豆视频 | 日韩在线视频一区 | 美女黄色网在线播放 | 午夜久久久精品 | 日韩中文在线观看 | 成 人 黄 色 视频免费播放 | 久久久久久久综合色一本 | aaa免费毛片 | 免费观看完整版无人区 | 国产成人高清在线 | 亚洲视频观看 | 久久精品久久综合 | 91精品一区国产高清在线gif | 国产成人久久精品 | 99精品在线免费观看 | 国产成人一区二区三区影院在线 | 96精品高清视频在线观看软件特色 | 91中文在线 | 美女黄网久久 | 中文字幕在线乱 | 在线观看视频精品 | 免费视频久久久久久久 | 国产精品91一区 | 日韩美av在线 | 在线观看韩日电影免费 | 国产精品扒开做爽爽的视频 | 欧美日韩激情视频8区 | 久久成人在线视频 | 黄色小网站免费看 | 91热| 2022久久国产露脸精品国产 | 精品女同一区二区三区在线观看 | 欧美电影在线观看 | 国产福利一区二区在线 | 欧美午夜a | 欧美一级特黄aaaaaa大片在线观看 | 天天天天天操 | 91热精品 | 免费在线观看av网站 | 91欧美视频网站 | 精品影院一区二区久久久 | 91精品久久久久久综合五月天 | 日韩精品一区二区三区丰满 | 国产视频久久 | av线上看 | 丰满少妇久久久 | 一区精品在线 | 色婷婷88av视频一二三区 | 国产精品久久影院 | 蜜臀av性久久久久av蜜臀三区 | 欧美性网站 | 天天操天天操一操 | 国产精品女人久久久久久 | 顶级欧美色妇4khd | www.国产在线观看 | 五月婷婷,六月丁香 | 豆豆色资源网xfplay | 麻豆一级视频 | 天天爱综合| 久久国产精品电影 | 中文字幕在线日 | 亚洲禁18久人片 | 国产在线不卡视频 | 成人在线免费视频观看 | 在线超碰av | 日韩欧美亚州 | 亚洲另类久久 | 亚洲丁香久久久 | 亚洲国产成人精品在线 | 高清精品久久 | 亚洲综合涩 | 激情五月播播久久久精品 | 91精彩视频 | 在线免费试看 | 国产精品成人一区二区 | 午夜av色| a爱爱视频| 国产 日韩 在线 亚洲 字幕 中文 | 五月婷婷中文 | 在线a视频| 91成人小视频 | 激情综合色图 | 天天综合人人 | 国产高清永久免费 | av一区在线播放 | 亚洲综合色视频在线观看 | 亚洲年轻女教师毛茸茸 | 国产黄色免费在线观看 | 亚洲精品国产成人av在线 | 久草精品电影 | 丁香五月亚洲综合在线 | 精品色999 | 国产成人精品亚洲a | av一级网站 | 丁香六月在线 | 四虎在线免费观看视频 | 日韩高清在线一区二区三区 | 天天做夜夜做 | 国产精品资源网 | 91视频在线自拍 | 国产97视频在线 | 国产视频在线免费观看 | 人人爽爽人人 | 国产高清无线码2021 | 国产精品 国产精品 | 91精品啪在线观看国产81旧版 | 久久久国产精品电影 | 99在线高清视频在线播放 | 国产字幕在线观看 | 亚洲精品免费在线视频 | 国产成人一级电影 | 国产午夜亚洲精品 | 91精品国产99久久久久久红楼 | 日本久久免费视频 | 一本一本久久a久久精品综合小说 | 九九热中文字幕 | 国产美女被啪进深处喷白浆视频 | 国产一区二区精品91 | 亚洲精品美女在线观看 | 国产超碰在线观看 | 精品国产乱码 | 美女黄视频免费 | 欧美一级看片 | 一区精品久久 | 99热这里只有精品免费 | 夜夜爽www | 精品国产欧美一区二区三区不卡 | 国产精品久久久久av | 日韩在线免费视频观看 | 国产精品毛片久久久久久久久久99999999 | 免费看精品久久片 | 欧美一区二区在线看 | 尤物一区二区三区 | 午夜国产成人 | 久久精品一区二区三 | 精选久久 | 国产毛片久久久 | 1024手机基地在线观看 | 久久综合中文色婷婷 | 国产日韩欧美在线观看 | 国产高清精品在线观看 | 高潮久久久| 中文字幕av在线不卡 | 亚洲精品男人的天堂 | 久久影视网| 国产视频在线观看一区 | 少妇超碰在线 | 国产成人精品综合久久久久99 | 日本在线h | 91麻豆福利 | 亚洲 欧美 综合 在线 精品 | 天天草天天爽 | 99久久99久国产黄毛片 | 在线观看视频 | 亚洲免费不卡 | 制服丝袜欧美 | 国产精品99蜜臀久久不卡二区 | 在线午夜av| av电影免费在线看 | 亚洲黄色高清 | 久久99国产精品二区护士 | 狠狠干狠狠久久 | 天天看天天干 | 国产精品久久久久久69 | 天天人人 | 久久8| 日韩网站在线免费观看 | 免费福利视频网站 | 97视频入口免费观看 | 久久精品8 | 精品国产一区二区三区四区在线观看 | 亚洲精品久久久久www | 伊人狠狠色丁香婷婷综合 | 日韩在线免费高清视频 | 国产精品久久久久久999 | 精品成人免费 | 国产女人40精品一区毛片视频 | 国产香蕉久久精品综合网 | 一区 在线 影院 | 伊人天天操 | 精品av在线播放 | 久久国产精品免费看 | 91黄色在线观看 | 亚洲成人av电影在线 | 亚洲在线视频网站 | 伊人射 | 国产精彩在线视频 | 欧美一级专区免费大片 | 成人在线视频免费观看 | 日韩视频一区二区 | 玖玖色在线观看 | 手机看片国产日韩 | 久久久久久国产精品久久 | 国产看片网站 | 色婷婷免费视频 | 久久久久久久久久久久久国产精品 | 麻豆视频免费看 | 狠狠色丁香婷婷综合最新地址 | 久久久国产精品一区二区中文 | 免费中文字幕 | 色偷偷网站视频 | 91综合视频在线观看 | 五月婷婷精品 | 国产美女精品久久久 | 国内精品久久久久影院一蜜桃 | 麻豆视频免费在线播放 | 成人免费在线观看电影 | 色射爱 | 国产精品午夜在线 | 丁香婷婷综合网 | www.狠狠色 | 制服丝袜在线91 | 91av在线免费视频 | zzijzzij亚洲日本少妇熟睡 | 亚洲精品资源 | 久操伊人 | 福利一区在线视频 | 99激情网 | 免费在线91 | 久草精品在线播放 | 97精品国产91久久久久久 | 99国产在线视频 | 黄色在线免费观看网站 | 欧美精品久久久久久 | 91午夜精品 | 日韩av三区 | 久久艹欧美 | 国产精品video爽爽爽爽 | 777奇米四色 | 国内丰满少妇猛烈精品播 | 在线观看av片 | 99爱在线| 伊人天堂网| 国产精品私拍 | 色先锋av资源中文字幕 | 狠狠的日 | 国产一级电影在线 | 超碰97公开 | 亚洲国产中文字幕 | 高清不卡毛片 | 粉嫩av一区二区三区免费 | 五月天中文字幕 | 日韩欧美在线观看 | 亚洲人成影院在线 | 国产精品ssss在线亚洲 | 天天爱天天干天天爽 | av免费电影在线观看 | 国产成人精品av在线 | 青青啪 | 欧美a视频在线观看 | 高清不卡毛片 | www视频在线播放 | 亚洲黄色成人 | 日批网站免费观看 | 最近中文字幕大全 | 欧美99精品 | 久久福利在线 | 狠狠色狠狠色终合网 | 最近高清中文字幕在线国语5 | 亚洲狠狠 | 久久久久久久久免费视频 | 免费 在线 中文 日本 | 国产欧美最新羞羞视频在线观看 | 天天操夜夜叫 | 亚洲自拍自偷 | 欧美国产亚洲精品久久久8v | 91丨九色丨蝌蚪丨老版 | 久久久久久久久久久久久久电影 | 99热在线观看 | 最近高清中文在线字幕在线观看 | av线上免费观看 | 黄色av电影在线观看 | 精品国产黄色片 | 97视频入口免费观看 | 久久99国产综合精品 | 免费高清男女打扑克视频 | 亚洲黄色免费网站 | 久草免费手机视频 | 久久视频这里只有精品 | 在线天堂v | 日韩精品免费 | 国产精品久久久久一区二区三区共 | 九草视频在线 | 九九热免费在线观看 | 日韩久久久久久久久久 | 国产三级国产精品国产专区50 | 一区二区三区电影在线播 | 久草在线最新免费 | 国产成人区 | 久久新| 亚洲精品视频在线观看免费视频 | 欧美精品中文在线免费观看 | 国产精品毛片一区二区在线看 | 日日操操操 | 中文字幕免费看 | 久久国产一区二区 | 国产一二三在线视频 | 免费色视频网站 | 一区二区三区电影 | 中文字幕黄色网址 | 亚洲综合在 | 99精品视频免费在线观看 | 中文字幕在线观看视频一区二区三区 | 欧美精品亚州精品 | 狠狠躁日日躁狂躁夜夜躁av | 免费看片日韩 | 97狠狠干 | 欧美色噜噜 | 中文资源在线官网 | 亚洲精品视频中文字幕 | 免费黄色a网站 | 2023国产精品自产拍在线观看 | 亚洲精品在线免费播放 | 日韩在线免费看 | 色婷婷色 | 久久免费高清 | 亚洲视屏 | 欧美日韩亚洲在线 | 97精品国产97久久久久久粉红 | 久久久亚洲精华液 | 一区二区三区在线看 | av看片网 | 97在线看| 99福利片| 狠狠狠干狠狠 | 国产亚洲在线观看 | 探花视频在线版播放免费观看 | 亚洲一二三久久 | 亚洲第一伊人 | 五月婷婷激情六月 | 一 级 黄 色 片免费看的 | 在线免费视频 你懂得 | 色a4yy| 美女久久| 久久神马影院 | 国产不卡视频在线播放 | 欧美一区成人 | 成人免费观看完整版电影 | 欧美精品在线一区二区 | 国产糖心vlog在线观看 | 国产亚洲欧美在线视频 | 日韩av看片| 中文字幕av最新 | 黄网站www | 亚洲好视频 | 亚洲在线视频观看 | 欧美日bb | 九九九在线观看视频 | 在线播放精品一区二区三区 | 黄a网站| 91在线视频观看免费 | jizz欧美性9 国产一区高清在线观看 | 一区二区三区四区精品视频 | 国产精品黄色 | 欧美日韩亚洲精品在线 | 国产大片黄色 | 久久久久久久久久久精 | 深爱激情婷婷网 | 91桃色免费观看 | 天天干视频在线 | 97超碰在线视 | 国产精品手机在线 | 人人插超碰 | 在线日韩av | 九九热精品视频在线观看 | 婷婷综合导航 | 精品欧美小视频在线观看 | 精品国产乱码久久久久久1区2匹 | 三级动图 | 亚洲精品欧洲精品 | 亚洲国产成人在线 | 色综合欧洲 | 一区二区 不卡 | 亚洲最大av在线播放 | 射久久| 久久99久久99精品免观看粉嫩 | 欧美黄污视频 | 黄色在线网站噜噜噜 | 国产69精品久久久久99 | 色片网站在线观看 | 久久久久久不卡 | 99自拍视频在线观看 | 国产91在线免费视频 | 亚洲最新在线 | 久久婷亚洲五月一区天天躁 | 国产原创在线 | 国产aaa免费视频 | 蜜臀av性久久久久蜜臀aⅴ涩爱 | 成人久久18免费网站图片 | 婷婷六月天丁香 | 中文字幕中文中文字幕 | 久久亚洲热| 日韩综合色| 精品久久久久久久久久 | 最近免费中文字幕mv在线视频3 | 精品一区精品二区高清 | aaa日本高清在线播放免费观看 | 亚洲三区在线 | 国产精品不卡在线观看 | 国产一级免费在线 | 欧美一区中文字幕 | 天天干婷婷| 天天干天天上 | 国产美腿白丝袜足在线av | 激情久久小说 | 免费男女羞羞的视频网站中文字幕 | 亚洲欧美激情精品一区二区 | 欧美淫视频 | 国产精品一区一区三区 | 国产成人中文字幕 | 菠萝菠萝蜜在线播放 | 国产裸体bbb视频 | 视频成人 | www.91国产 | ,午夜性刺激免费看视频 | 亚洲视频电影在线 | 久久精品久久久久久久 | 久久69精品久久久久久久电影好 | 三级av小说 | 国产日韩欧美在线观看视频 | 四虎视频 | 久久99九九99精品 | 最近最新中文字幕视频 | 91色蜜桃| 国产精品原创在线 | 91大神dom调教在线观看 | 精品一区精品二区 | 色婷婷激情 | 欧美一区免费观看 | 久久久久免费精品视频 | 99久在线精品99re8热视频 | 国产探花视频在线播放 | av免费看电影 | 国产色a在线观看 | 色多多污污在线观看 | 最近日本中文字幕a | 国产午夜精品理论片在线 | 亚洲人xxx| 国产成人亚洲在线观看 | 亚洲一区二区三区四区在线视频 | 欧美二区三区91 | 免费精品人在线二线三线 | 国产美腿白丝袜足在线av | 国产精品1区2区 | av电影在线不卡 | 久久久国产99久久国产一 | 一本一本久久aa综合精品 | 亚洲黄色片在线 | 久久女同性恋中文字幕 | 日韩乱色精品一区二区 | 免费成人在线观看 | 日韩a欧美 | 91丨九色丨91啦蝌蚪老版 | 成年人免费看的视频 | 色婷婷综合久久久久 | 久久精品久久国产 | 亚色视频在线观看 | 日韩高清成人 | 亚洲视频在线观看 | 欧美日韩在线第一页 | 亚洲欧美va | 91精品啪| 2019av在线视频 | 婷婷国产一区二区三区 | 国产美女免费视频 | 国产精品久久久久免费a∨ 欧美一级性生活片 | 五月婷婷中文 | 国产中文字幕在线 | 美女视频a美女大全免费下载蜜臀 | 国产成人福利在线 | 亚洲国内精品在线 | 亚洲精品一区中文字幕乱码 | 久久不见久久见免费影院 | 亚洲综合在线五月 | 狠狠干2018 | 久黄色| 亚洲精品中文字幕视频 | 99精品久久只有精品 | 亚洲激情六月 | 国产福利在线免费 | 精品久久久久久一区二区里番 | 国产精品九九热 | 欧美激情另类文学 | 亚洲成人免费在线 | 亚州国产精品视频 | 亚洲精品自拍视频在线观看 | 91成人精品一区在线播放69 | 欧美日韩一区二区免费在线观看 | 精品久久久久亚洲 | 中文字幕在线看视频国产 | 久草在线综合网 | 亚洲女欲精品久久久久久久18 | 成人av网站在线 | 亚洲欧美日韩精品久久奇米一区 | 久久久久这里只有精品 | 在线观看久久久久久 | 成人 亚洲 欧美 | 久久www免费人成看片高清 | 综合激情网 | 在线观看911视频 | 黄色av观看| 天天射天天爽 | 国产永久免费 | 日韩理论片中文字幕 | 欧美一级片免费 | 日韩av电影免费在线观看 | 亚洲经典中文字幕 | 国产午夜精品一区二区三区在线观看 | 一级黄色片在线免费观看 | 欧美另类xxx| 天天色天天上天天操 | 在线国产不卡 | 婷婷久久一区 | 99免费在线观看视频 |