You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
232 lines
8.5 KiB
232 lines
8.5 KiB
package com.example.myapplication;
|
|
import android.annotation.SuppressLint;
|
|
import android.app.Activity;
|
|
import android.content.Intent;
|
|
import android.content.pm.PackageManager;
|
|
import android.graphics.drawable.Drawable;
|
|
import android.os.Bundle;
|
|
import android.os.Handler;
|
|
import android.os.Message;
|
|
import android.util.Log;
|
|
import android.view.View;
|
|
import android.widget.Toast;
|
|
|
|
import androidx.annotation.NonNull;
|
|
|
|
import com.baidu.mapapi.walknavi.WalkNavigateHelper;
|
|
import com.baidu.mapapi.walknavi.adapter.IWNaviStatusListener;
|
|
import com.baidu.mapapi.walknavi.adapter.IWRouteGuidanceListener;
|
|
import com.baidu.mapapi.walknavi.adapter.IWTTSPlayer;
|
|
import com.baidu.mapapi.walknavi.model.RouteGuideKind;
|
|
import com.baidu.platform.comapi.walknavi.WalkNaviModeSwitchListener;
|
|
import com.baidu.platform.comapi.walknavi.widget.ArCameraView;
|
|
|
|
public class WNaviGuideActivity extends Activity {
|
|
private final static String TAG = WNaviGuideActivity.class.getSimpleName();
|
|
|
|
private WalkNavigateHelper mNaviHelper;
|
|
|
|
private boolean isPreSPEAKtotal = true;
|
|
private String orient = "";
|
|
|
|
@Override
|
|
protected void onDestroy() {
|
|
super.onDestroy();
|
|
mNaviHelper.quit();
|
|
}
|
|
|
|
@Override
|
|
protected void onResume() {
|
|
super.onResume();
|
|
mNaviHelper.resume();
|
|
}
|
|
|
|
@Override
|
|
protected void onPause() {
|
|
super.onPause();
|
|
mNaviHelper.pause();
|
|
}
|
|
|
|
|
|
Handler handler = new Handler() {
|
|
@SuppressLint("HandlerLeak")
|
|
@Override
|
|
public void handleMessage(Message msg) {
|
|
super.handleMessage(msg);
|
|
if (msg.what == 0x001) {
|
|
ChangeState();
|
|
handler.sendEmptyMessageDelayed(0x001, 45000);
|
|
}
|
|
if (msg.what == 0x002) {
|
|
handler.sendEmptyMessageDelayed(0x002, 30000);
|
|
}
|
|
if (msg.what == 0x003) {
|
|
|
|
startActivity(new Intent(WNaviGuideActivity.this, MainActivity.class));
|
|
}
|
|
}
|
|
};
|
|
|
|
private void ChangeState() {
|
|
isPreSPEAKtotal = true;
|
|
}
|
|
|
|
@Override
|
|
protected void onCreate(Bundle savedInstanceState) {
|
|
super.onCreate(savedInstanceState);
|
|
mNaviHelper = WalkNavigateHelper.getInstance();
|
|
try {
|
|
View view = mNaviHelper.onCreate(WNaviGuideActivity.this);
|
|
if (view != null) {
|
|
setContentView(view);
|
|
}
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
}
|
|
//设置步行导航状态监听
|
|
mNaviHelper.setWalkNaviStatusListener(new IWNaviStatusListener() {
|
|
@Override
|
|
public void onWalkNaviModeChange(int mode, WalkNaviModeSwitchListener listener) {
|
|
Log.d("======", "onWalkNaviModeChange : " + mode);
|
|
mNaviHelper.switchWalkNaviMode(WNaviGuideActivity.this, mode, listener);
|
|
}
|
|
|
|
/* @Description: 这个是在退出导航时自动调用的方法,在这里要把对象进行释放,避免空对象的产生
|
|
* @Author: LiY ue
|
|
*/
|
|
@Override
|
|
public void onNaviExit() {
|
|
Log.d("======", "onNaviExit");
|
|
handler.removeMessages(0x001);
|
|
handler.removeMessages(0x002);
|
|
handler.removeMessages(0x003);
|
|
}
|
|
});
|
|
|
|
|
|
mNaviHelper.setTTsPlayer(new IWTTSPlayer() {
|
|
@Override
|
|
public int playTTSText(final String s, boolean b) {
|
|
Log.d(TAG, "tts: " + s);
|
|
return 0;
|
|
}
|
|
});
|
|
|
|
|
|
boolean startResult = mNaviHelper.startWalkNavi(WNaviGuideActivity.this);
|
|
Log.e(TAG, "startWalkNavi result : " + startResult);
|
|
//设置路线指引监听
|
|
mNaviHelper.setRouteGuidanceListener(this, new
|
|
|
|
IWRouteGuidanceListener() {
|
|
|
|
@Override
|
|
public void onRouteGuideIconUpdate(Drawable icon) {
|
|
|
|
}
|
|
|
|
@Override
|
|
public void onRouteGuideKind(RouteGuideKind routeGuideKind) {
|
|
Log.d("======", "onRouteGuideKind: " + routeGuideKind);
|
|
if (routeGuideKind == RouteGuideKind.NE_Maneuver_Kind_PassRoad_Left || routeGuideKind == RouteGuideKind.NE_Maneuver_Kind_PassRoad_Right || routeGuideKind == RouteGuideKind.NE_Maneuver_Kind_Right_PassRoad_Front || routeGuideKind == RouteGuideKind.NE_Maneuver_Kind_Right_PassRoad_UTurn)
|
|
|
|
if (routeGuideKind == RouteGuideKind.NE_Maneuver_Kind_RightDiagonal_PassRoad_Front || routeGuideKind == RouteGuideKind.NE_Maneuver_Kind_RightDiagonal_PassRoad_Left || routeGuideKind == RouteGuideKind.NE_Maneuver_Kind_RightDiagonal_PassRoad_Left_Front || routeGuideKind == RouteGuideKind.NE_Maneuver_Kind_RightDiagonal_PassRoad_Right || routeGuideKind == RouteGuideKind.NE_Maneuver_Kind_RightDiagonal_PassRoad_Right_Back || routeGuideKind == RouteGuideKind.NE_Maneuver_Kind_RightDiagonal_PassRoad_Right_Front){
|
|
Log.d("========", "onRouteGuideKind: aaaaaa");
|
|
}
|
|
|
|
}
|
|
|
|
/**
|
|
* @Description: 诱导信息
|
|
*/
|
|
@Override
|
|
public void onRoadGuideTextUpdate(CharSequence charSequence, CharSequence
|
|
charSequence1) {
|
|
Log.d(TAG, "onRoadGuideTextUpdate charSequence=: " + charSequence + " charSequence1 = : " +
|
|
charSequence1);
|
|
orient = charSequence.toString() + charSequence1.toString();
|
|
|
|
}
|
|
|
|
|
|
@Override
|
|
public void onRemainDistanceUpdate(CharSequence charSequence) {
|
|
Log.d(TAG, "onRemainDistanceUpdate: charSequence = :" + charSequence);
|
|
if (isPreSPEAKtotal) {
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
public void onRemainTimeUpdate(CharSequence charSequence) {
|
|
Log.d(TAG, "onRemainTimeUpdate: charSequence = :" + charSequence);
|
|
if (isPreSPEAKtotal) {
|
|
isPreSPEAKtotal = false;
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
public void onGpsStatusChange(CharSequence charSequence, Drawable drawable) {
|
|
Log.d(TAG, "onGpsStatusChange: charSequence = :" + charSequence);
|
|
|
|
}
|
|
|
|
|
|
@Override
|
|
public void onRouteFarAway(CharSequence charSequence, Drawable drawable) {
|
|
Log.d(TAG, "onRouteFarAway: charSequence = :" + charSequence);
|
|
}
|
|
|
|
|
|
@Override
|
|
public void onRoutePlanYawing(CharSequence charSequence, Drawable drawable) {
|
|
Log.d(TAG, "onRoutePlanYawing: charSequence = :" + charSequence);
|
|
|
|
}
|
|
|
|
|
|
@Override
|
|
public void onReRouteComplete() {
|
|
}
|
|
|
|
@Override
|
|
public void onArriveDest() {
|
|
handler.sendEmptyMessageDelayed(0x003, 6000);
|
|
}
|
|
|
|
@Override
|
|
public void onIndoorEnd(Message msg) {
|
|
|
|
}
|
|
|
|
@Override
|
|
public void onFinalEnd(Message msg) {
|
|
|
|
}
|
|
|
|
@Override
|
|
public void onVibrate() {
|
|
|
|
}
|
|
});
|
|
handler.sendEmptyMessage(0x001);
|
|
handler.sendEmptyMessage(0x002);
|
|
}
|
|
|
|
@Override
|
|
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
|
|
int[] grantResults) {
|
|
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
|
|
if (requestCode == ArCameraView.WALK_AR_PERMISSION) {
|
|
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_DENIED) {
|
|
Toast.makeText(WNaviGuideActivity.this, "没有相机权限,请打开后重试", Toast.LENGTH_SHORT).show();
|
|
} else if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
|
|
mNaviHelper.startCameraAndSetMapView(WNaviGuideActivity.this);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|