Androidアプリからトラックログ(GPXファイル)を渡してMyTracksを起動する方法

MyTracksにGPXファイルを送信する

2013-03-19 MyTracksバージョン2.0.4への対応
2012-07-15 MyTracksバージョン2.0への対応
2011-08-20 MyTracksバージョン1.1.8への対応

MyTracks はGPXファイルのインポート機能を持っていて,外部アプリからインテント経由でそれを実行できます. こんな感じです.

MyTracksにGPXファイルを読み込ませる実装例

  • gpxFilePath : GPXファイルのフルパス
  • activity : 呼び出し元アプリのActivity

final String MYTRACKS_PACK = "com.google.android.maps.mytracks";
String mytracksClass;
if (DeployUtil.isVersionAppExists(context, MYTRACKS_PACK, 66)) {
	// MyTracks V66+ (2.0.4以上)
	mytracksClass = "com.google.android.apps.mytracks.io.file.ImportActivity";
} else if (DeployUtil.isVersionAppExists(context, MYTRACKS_PACK, 48)) {
	// MyTracks V48+ (2.0以上)
	mytracksClass = "com.google.android.apps.mytracks.ImportActivity";
} else if (DeployUtil.isVersionAppExists(context, MYTRACKS_PACK, 31)) {
	// MyTracks V31+ (1.1.8以上)
	mytracksClass = "com.google.android.apps.mytracks.io.file.ImportActivity";
} else {
	// MyTracks V30-
	mytracksClass = "com.google.android.apps.mytracks.MyTracks";
}
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setClassName(MYTRACKS_PACK, mytracksClass);
intent.setType("application/gpx+xml");
intent.setData(Uri.fromFile(new File(gpxFilePath)));
activity.startActivity(intent);

/**
 * 特定のアプリのあるバージョン以上が存在するかどうかをチェックする
 * @param ctx
 * @param packname
 * @param requireVersion
 * @return
 */
public static boolean isVersionAppExists(Context ctx, String packname, int requireVersion) {
	PackageManager manager = ctx.getPackageManager();
	try {
		PackageInfo info = manager.getPackageInfo(packname, 0);
		int ver = info.versionCode;
		if (ver >= requireVersion) {
			return true;
		}
	} catch (NameNotFoundException e) {
		return false;
	}
	return false;
}

山旅ロガーのログをMyTracksに読み込ませた例
mytracks_exp1.png

GPXファイルをMyTracksに渡して何が嬉しいかですが,

  • MyTracksの画面を使って,地図上でトラックログを表示できる
  • Googleマイマップ,Googleドキュメント,Google Fusion Tableへのアップロード機能を使える

が思いつきます.

地図ロイド山旅ロガーでは後者,特にGoogleマイマップへのアップロードの目的で,MyTracksへの送信を実装しています.

参考

kamolandをフォローしましょう


© 2019 KMIソフトウェア