在好例子网,分享、交流、成长!
您当前所在位置:首页Java 开发实例Android平台开发 → 基于android平台下实时定位及移动轨迹记录系统

基于android平台下实时定位及移动轨迹记录系统

Android平台开发

下载此实例
  • 开发语言:Java
  • 实例大小:3.67M
  • 下载次数:89
  • 浏览次数:1067
  • 发布时间:2016-05-10
  • 实例类别:Android平台开发
  • 发 布 人:clonelove
  • 文件格式:.zip
  • 所需积分:2
 相关标签: Android 系统 定位 d 轨迹

实例介绍

【实例简介】
【实例截图】
【核心代码】

package com.example.moving2;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.ImageButton;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.RadioGroup.OnCheckedChangeListener;
import android.widget.Spinner;

import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.mapapi.SDKInitializer;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.BitmapDescriptor;
import com.baidu.mapapi.map.MapStatusUpdate;
import com.baidu.mapapi.map.MapStatusUpdateFactory;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.MyLocationConfiguration;
import com.baidu.mapapi.map.MyLocationConfiguration.LocationMode;
import com.baidu.mapapi.map.MyLocationData;
import com.baidu.mapapi.model.LatLng;

public class MainActivity extends Activity {
 
 private ImageButton startButton;  //开始运动按钮
 private Button recordButton; //运动记录按钮
 private Button styleButton;  //目标运动按钮
 
 private Spinner setStyle;
 private String style = "步行";   //所选择的运动方式
 private static final String[] selectStyle={
  "步行","跑步","骑行"
 };
 
 
 // 定位相关
 LocationClient mLocClient;
 public MyLocationListenner myListener = new MyLocationListenner();
 private LocationMode mCurrentMode;
 BitmapDescriptor mCurrentMarker;
 MapView mMapView;
 BaiduMap mBaiduMap;
 // UI相关
 OnCheckedChangeListener radioButtonListener;
 Button requestLocButton;
 boolean isFirstLoc = true;// 是否首次定位
 
 
 
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  SDKInitializer.initialize(getApplicationContext());
  setContentView(R.layout.activity_main);
  
  startButton = (ImageButton)findViewById(R.id.mStartButton);
  recordButton = (Button)findViewById(R.id.mRecordButton);
  styleButton = (Button)findViewById(R.id.mStyleButton);
  
  setStyle = (Spinner)findViewById(R.id.mStyleSpinner);
  /*
   * 运动方式选择
   */
  ArrayAdapter<String> styleAdapter = new ArrayAdapter<String>(this,
     R.layout.main_spinner,selectStyle);
  int styleId = android.R.layout.simple_spinner_dropdown_item;
  styleAdapter.setDropDownViewResource(styleId);
  setStyle.setAdapter(styleAdapter);
  //选择响应
  setStyle.setOnItemSelectedListener(new OnItemSelectedListener() {

   @Override
   public void onItemSelected(AdapterView<?> arg0, View arg1,
     int arg2, long arg3) {
    // TODO Auto-generated method stub
    arg0.setVisibility(View.VISIBLE);
    //style = selectStyle[arg2];
    style = arg0.getItemAtPosition(arg2).toString();
   }
   
   @Override
   public void onNothingSelected(AdapterView<?> arg0) {
    // TODO Auto-generated method stub
    
   }
  });
  
  startButton.setOnClickListener(new OnClickListener() {
   
   public void onClick(View arg0) {
    // TODO Auto-generated method stub
    Intent gotoMovActivity = new Intent();
    gotoMovActivity.setClass(MainActivity.this, MovingActivity.class);
    gotoMovActivity.putExtra("timestyle"," ");
    gotoMovActivity.putExtra("disstyle", " ");
    gotoMovActivity.putExtra("sportStyle", style);
    MainActivity.this.startActivity(gotoMovActivity);
   }
  });
  
  recordButton.setOnClickListener(new OnClickListener() {
   
   @Override
   public void onClick(View arg0) {
    // TODO Auto-generated method stub
    Intent gotoRecordActivity = new Intent();
    gotoRecordActivity.setClass(MainActivity.this, RecordActivity.class);
    MainActivity.this.startActivity(gotoRecordActivity);
   }
  });
  
  styleButton.setOnClickListener(new OnClickListener() {
   
   @Override
   public void onClick(View arg0) {
    // TODO Auto-generated method stub
    Intent gotoStyleActivity = new Intent();
    gotoStyleActivity.setClass(MainActivity.this, StyleActivity.class);
    MainActivity.this.startActivity(gotoStyleActivity);
   }
  });

  
  requestLocButton = (Button) findViewById(R.id.button1);
  mCurrentMode = LocationMode.NORMAL;
  requestLocButton.setText("普通");
  OnClickListener btnClickListener = new OnClickListener() {
   public void onClick(View v) {
    switch (mCurrentMode) {
    case NORMAL:
     requestLocButton.setText("跟随");
     mCurrentMode = LocationMode.FOLLOWING;
     mBaiduMap
       .setMyLocationConfigeration(new MyLocationConfiguration(
         mCurrentMode, true, mCurrentMarker));
     break;
    case COMPASS:
     requestLocButton.setText("普通");
     mCurrentMode = LocationMode.NORMAL;
     mBaiduMap
       .setMyLocationConfigeration(new MyLocationConfiguration(
         mCurrentMode, true, mCurrentMarker));
     break;
    case FOLLOWING:
     requestLocButton.setText("罗盘");
     mCurrentMode = LocationMode.COMPASS;
     mBaiduMap
       .setMyLocationConfigeration(new MyLocationConfiguration(
         mCurrentMode, true, mCurrentMarker));
     break;
    }
   }
  };
  requestLocButton.setOnClickListener(btnClickListener);

  //RadioGroup group = (RadioGroup) this.findViewById(R.id.radioGroup);
  radioButtonListener = new OnCheckedChangeListener() {
   @Override
   public void onCheckedChanged(RadioGroup group, int checkedId) {
   }
  };
  //group.setOnCheckedChangeListener(radioButtonListener);

  // 地图初始化
  mMapView = (MapView) findViewById(R.id.bmapView);
  mBaiduMap = mMapView.getMap();
  // 开启定位图层
  mBaiduMap.setMyLocationEnabled(true);
  // 定位初始化
  mLocClient = new LocationClient(this);
  mLocClient.registerLocationListener(myListener);
  LocationClientOption option = new LocationClientOption();
  option.setOpenGps(true);// 打开gps
  option.setCoorType("bd09ll"); // 设置坐标类型
  option.setScanSpan(1000);
  mLocClient.setLocOption(option);
  mLocClient.start();
 }
 

 //*** 定位SDK监听函数

 public class MyLocationListenner implements BDLocationListener {

  @Override
  public void onReceiveLocation(BDLocation location) {
   // map view 销毁后不在处理新接收的位置
   if (location == null || mMapView == null)
    return;
   MyLocationData locData = new MyLocationData.Builder()
     .accuracy(location.getRadius())
     // 此处设置开发者获取到的方向信息,顺时针0-360
     .direction(100).latitude(location.getLatitude())
     .longitude(location.getLongitude()).build();
   mBaiduMap.setMyLocationData(locData);
   if (isFirstLoc) {
    isFirstLoc = false;
    LatLng ll = new LatLng(location.getLatitude(),
      location.getLongitude());
    MapStatusUpdate u = MapStatusUpdateFactory.newLatLng(ll);
    mBaiduMap.animateMapStatus(u);
   }
  }

  public void onReceivePoi(BDLocation poiLocation) {
  }
 }
 
 
 
 /**
  * 设置底图显示模式
  *
  * @param view
  */
 public void setMapMode(View view) {
  boolean checked = ((RadioButton) view).isChecked();
  switch (view.getId()) {
  case R.id.normal:
   if (checked)
    mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);
   break;
  case R.id.statellite:
   if (checked)
    mBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);
   break;
  }
 }
 
 /**
  * 设置是否显示交通图
  *
  * @param view
  */
 public void setTraffic(View view) {
  mBaiduMap.setTrafficEnabled(((CheckBox) view).isChecked());
 }
 @Override
 protected void onPause() {
  mMapView.onPause();
  super.onPause();
 }

 @Override
 protected void onResume() {
  mMapView.onResume();
  super.onResume();
 }

 @Override
 protected void onDestroy() {
  // 退出时销毁定位
  mLocClient.stop();
  // 关闭定位图层
  mBaiduMap.setMyLocationEnabled(false);
  mMapView.onDestroy();
  mMapView = null;
  super.onDestroy();
 }
}

实例下载地址

基于android平台下实时定位及移动轨迹记录系统

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警