Android使用百度LBS SDK(六)截取轨迹地图并分享

@@ -1,14 +1,24 @@
package com.zms.baidulbs;
+import java.io.File;
import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.util.EncodingUtils;
import android.app.Activity;
+import android.content.Intent;
import android.content.SharedPreferences;
+import android.graphics.Bitmap;
+import android.graphics.Color;
+import android.net.Uri;
import android.os.Bundle;
+import android.view.View;
+import android.view.Window;
import android.widget.Button;
import android.widget.Toast;
@@ -24,6 +34,7 @@
import com.baidu.mapapi.map.OverlayOptions;
import com.baidu.mapapi.map.PolylineOptions;
import com.baidu.mapapi.map.BaiduMap.OnMarkerClickListener;
+import com.baidu.mapapi.map.BaiduMap.SnapshotReadyCallback;
import com.baidu.mapapi.map.InfoWindow.OnInfoWindowClickListener;
import com.baidu.mapapi.model.LatLng;
import com.zms.baidulbs.R;
@@ -34,11 +45,13 @@
private InfoWindow mInfoWindow;
private Marker mMarkerStart;
private Marker mMarkerEnd;
+   private Button btnShare, btnBack;
public double mRouteLatitude = 0.0;
public double mRouteLongitude = 0.0;
private final String ROUTE_PATH = "/sdcard/Route/";
+   private String filePath = "";
private RouteAdapter routeAdapter = new RouteAdapter();
// 初始化全局 bitmap 信息,不用时及时 recycle
@@ -51,13 +64,22 @@
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
+   requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.route_show);
-   String filePath = "";
+   // Hide Status Bar
+   View decorView = getWindow().getDecorView();
+   decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN);
+
+   btnShare = (Button) findViewById(R.id.btnShare);
+   btnBack = (Button) findViewById(R.id.btnBack);
+   btnShare.setOnClickListener(new MyOnClickListener());
+   btnBack.setOnClickListener(new MyOnClickListener());
+
Bundle extras = getIntent().getExtras();
if (extras != null) {
filePath = extras.getString("filePath");
-   setTitle(filePath.substring(0, filePath.length() - 4));
+   // setTitle(filePath.substring(0, filePath.length() - 4));
} else {
Toast.makeText(getApplicationContext(), "轨迹文件不存在",
Toast.LENGTH_SHORT).show();
@@ -71,6 +93,51 @@ protected void onCreate(Bundle savedInstanceState) {
}
+   class MyOnClickListener implements View.OnClickListener {
+   @Override
+   public void onClick(View v) {
+   switch (v.getId()) {
+   case R.id.btnShare:
+   mBaiduMap.snapshot(new SnapshotReadyCallback() {
+   public void onSnapshotReady(Bitmap snapshot) {
+   File file = new File(ROUTE_PATH + filePath + ".png");
+   FileOutputStream out;
+   try {
+   out = new FileOutputStream(file);
+   if (snapshot.compress(Bitmap.CompressFormat.PNG,
+   100, out)) {
+   out.flush();
+   out.close();
+   }
+   Intent intent = new Intent(Intent.ACTION_SEND);
+   Uri uri = Uri.fromFile(file);
+   intent.setType("image/png");
+   intent.putExtra(Intent.EXTRA_STREAM, uri);
+   intent.putExtra(Intent.EXTRA_TITLE, "分享轨迹图到");
+   Intent chooserIntent = Intent.createChooser(intent,
+   "分享轨迹");
+   if (chooserIntent == null) {
+   return;
+   }
+   try {
+   startActivity(chooserIntent);
+   } catch (android.content.ActivityNotFoundException ex) {
+   }
+   } catch (FileNotFoundException e) {
+   e.printStackTrace();
+   } catch (IOException e) {
+   e.printStackTrace();
+   }
+   }
+   });
+   break;
+   case R.id.btnBack:
+   finish();
+   break;
+   }
+   }
+   }
+
/**
* 从文件读取经纬度表单
*
时间: 2024-11-03 02:54:35

Android使用百度LBS SDK(六)截取轨迹地图并分享的相关文章

Android使用百度LBS SDK(二)

上篇:Android使用百度LBS SDK(实现了百度地图的基本使用,记录轨迹,优化轨迹平滑度,轨迹查看与截图分享.) 今天再总结下测距和测速的使用: 计算轨迹起始点直线距离和路线距离 代码: // 直线距离 double linearDistance = DistanceUtil.getDistance(llStart, llEnd); // 轨迹距离 double routeDistance = 0.0; for (int i = 0; i < points.size() - 1; i++)

Android使用百度LBS SDK(一)显示地图MapView

类似百度应用引擎,使用百度的LBS服务,首先我们在百度开放服务平台创建一个应用,如下图: 进入应用详情,然后点击"LBS服务",设置应用: 数字签名的获取方式,可以在Eclipse(ADT 22)中查看,Window->Preferences->Android->Build,SHA1 fingerprint就是我们需要的: Android SDK安全码组成:数字签名+;+包名. 接着下载LBS Android SDK,然后按照百度官方文档的方法进行操作: 第一步:在工

Android使用百度LBS SDK(二)实现定位

昨天初步接触了百度的LBS SDK,让应用可以通过MapView显示地图,今天在昨天的代码基础上,实现一下定位功能: 首先看一下效果图吧: 左下角的按钮可以切换模式,分为三种: 普通(LocationMode.NORMAL). 跟随(LocationMode.FOLLOWING). 罗盘(LocationMode.COMPASS),相信用过百度地图的同学对这几个模式不陌生吧. 下面是代码: 分别声明一个MapView和BaiduMap: private MapView mMapView; pri

Android使用百度LBS SDK(四)记录和显示行走轨迹

记录轨迹思路 用Service获取经纬度,onCreate中开始采集经纬度点,保存到ArrayList 每隔5秒取样一次,若经纬度未发生变化,丢弃该次取样 在onDestroy中,将ArrayList转成JSON格式,然后存储到SDCard中 显示轨迹思路 读取目录下所有轨迹文件,并生成ListView 在OnItemClick中将文件名称通过intent.putExtra传递给显示轨迹的Activity 根据文件名将对应的JSON内容转成ArrayList 然后将以上ArrayList的点集依

Android使用百度LBS SDK(五)优化轨迹平滑度

同一数据,优化前后效果对比: 优化算法: public List<RoutePoint> optimizePoints(List<RoutePoint> inPoint) { int size = inPoint.size(); List<RoutePoint> outPoint; int i; if (size < 5) { return inPoint; } else { // Latitude inPoint.get(0) .setLat((3.0 * in

Android使用百度定位SDK 方法及错误处理

之前我的项目中的位置定位使用的是基站方法,使用的Google提供的API,但是前天中午突然就不返回数据了,到网上搜了一下才知道,Google的接 口不提供服务了,基于时间紧迫用了百度现有的SDK,但是在使用过程中第一次获取位置总是空值,经过多次实验终于成功.当然,如果需要精确的位置,你可以 再加上位置偏移算法.我的应用对这个要求不高,就没做,一搜一大把,就不多说了. 下面这段话来自 百度地图API>定位SDK 百度地图定位SDK免费对外开放,无需申请key.在使用百度定位SDK前,希望先阅读百度

Android 使用百度导航SDK 2.0小结

效果: 使用百度导航SDK,首先需要获取的信息有: 1.起始位置的经纬度,地名 2.终点的经纬度,地名 3.起始点经纬度所使用的坐标系类型(CoordinateType ) 参数如下: private void routeplanToNavi(CoordinateType coType, double startLatitude, double startLongitude, String startName, double endLatitude, double endLongitude, S

Android集成讯飞SDK实现语音拨号、语音导航、语音启动应用

转载请注明出处:周木水的CSDN博客 http://blog.csdn.net/zhoumushui 科大讯飞语音SDK的语义分析还是挺强大的,可使我们的应用更加强大. 上篇博文介绍了讯飞SDK的一些简单功能: Android 使用讯飞语音SDK 今天来看看对语义分析结果JSON的解析并处理: 实现语音拨号 首先,我们看看"打电话给张三"这句话在服务器分析之后,传给我们的JSON是什么样的: { "semantic": { "slots": {

xamarin.android 绑定百度地图SDK遇到的问题

在 xamarin.android 绑定项目中,绑定 百度地图的LBS地图SDK,参考 https://developer.xamarin.com/guides/android/advanced_topics/binding-a-java-library/binding-a-jar/ 设置好后,编译,  然后提示错误,其中一个错误 是 意思就是说转换 出来的CS 代码中,有重复的 类型. 理论上来说,转换的 CS 代码 是不应该出现重复代码的,有重复,意味这 jar有重复代码. 然后查看 百度地