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に読み込ませた例
GPXファイルをMyTracksに渡して何が嬉しいかですが,
- MyTracksの画面を使って,地図上でトラックログを表示できる
- Googleマイマップ,Googleドキュメント,Google Fusion Tableへのアップロード機能を使える
が思いつきます.
地図ロイド,山旅ロガーでは後者,特にGoogleマイマップへのアップロードの目的で,MyTracksへの送信を実装しています.
参考