質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Gradle

Gradleは、ビルド自動化ツールです。 ソフトウェアパッケージやドキュメント、 または実際に何か他の種類のプロジェクトの構築、テスト、公開、展開などを自動化が出来ます

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

2回答

5497閲覧

Android Studio 地図で走った後の線の追加、距離、初期位置に関して

hiryuuniziiro

総合スコア12

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Gradle

Gradleは、ビルド自動化ツールです。 ソフトウェアパッケージやドキュメント、 または実際に何か他の種類のプロジェクトの構築、テスト、公開、展開などを自動化が出来ます

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2016/01/21 16:07

android studioでジョギングアプリを作りたいと思っています
内容的には走った後に線が引かさり、自分がどういうルートで走ったかをみることが出来るというアプリです。
加えてどのぐらいの距離走ったかも見るようにもしたいのですが、表示されませんでした。
それどころか初期位置は自分の位置を指定したと思っていたのですが、まったく指定されていないといった状況です。

作ればわかる!Androidプログラミング 第3版のジョギングアプリを参考にして作ってみましたが
走った後の線は表示されず、走った距離も出ず、といった具合です

どうしたら走った後に線が表示されどのくらいの距離を走ったかわかるようになりますか?
また、どうしたら初めに表示されるの位置が自分のいる場所になりますか?
どれでもいいので教えてください。

import android.content.Context; import android.content.Intent; import android.location.LocationManager; import android.support.v4.app.FragmentActivity; import android.os.Bundle; import com.google.android.gms.maps.CameraUpdateFactory; import com.google.android.gms.maps.GoogleMap; import com.google.android.gms.maps.MapsInitializer; import com.google.android.gms.maps.SupportMapFragment; import com.google.android.gms.maps.model.LatLng; import com.google.android.gms.maps.model.PolylineOptions; import android.os.Handler; import android.view.View; import android.widget.Button; import android.widget.TextView; import java.text.SimpleDateFormat; import android.app.LoaderManager; import android.graphics.Color; import android.location.Location; import com.google.android.gms.maps.model.CameraPosition; import com.google.android.gms.maps.model.MarkerOptions; import java.util.ArrayList; import java.util.List; public class FreeActivity extends FragmentActivity implements Runnable, View.OnClickListener { private static final int ADDRESSLOADER_ID = 0; private List<LatLng> mRunList = new ArrayList<LatLng>(); private double mMeter = 0.0; private boolean mStart = false; private boolean mFirst = false; private boolean mStop = false; private GoogleMap mMap; Location currentLocation; LocationManager manager; private SimpleDateFormat dataFormat = new SimpleDateFormat("mm:ss.SS"); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_maps); // Obtain the SupportMapFragment and get notified when the map is ready to be used. SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() .findFragmentById(R.id.map); manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap(); MapsInitializer.initialize(this); } public void onLocationChanged(Location location) { if (mStop) { return; } CameraPosition cameraPos = new CameraPosition.Builder() .target(new LatLng(location.getLatitude(), location.getLongitude())).zoom(19) .bearing(0).build(); mMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPos)); mMap.clear(); LatLng latlng = new LatLng(location.getLatitude(), location.getLongitude()); MarkerOptions options = new MarkerOptions(); options.position(latlng); if (mStart) { if (mFirst) { Bundle args = new Bundle(); args.putDouble("lat", location.getLatitude()); args.putDouble("lon", location.getLongitude()); getLoaderManager().restartLoader(ADDRESSLOADER_ID, args, (LoaderManager.LoaderCallbacks<Object>) this); mFirst = !mFirst; } else { drawTrace(latlng); sumDistance(); } } } private void drawTrace(LatLng latlng) { mRunList.add(latlng); if (mRunList.size() > 2) { PolylineOptions polyOptions = new PolylineOptions(); for (LatLng polyLatLng : mRunList) { polyOptions.add(polyLatLng); } polyOptions.color(Color.BLUE); polyOptions.width(3); polyOptions.geodesic(false); mMap.addPolyline(polyOptions); } } private void sumDistance() { if (mRunList.size() < 2) { return; } mMeter = 0; float[] results = new float[3]; int i = 1; while (i < mRunList.size()) { results[0] = 0; Location.distanceBetween(mRunList.get(i - 1).latitude, mRunList.get(i - 1).longitude, mRunList.get(i).latitude, mRunList.get(i).longitude, results); mMeter += results[0]; i++; } } public void onMapReady(GoogleMap googleMap) { mMap = googleMap; mMap.setMyLocationEnabled(true); LatLng cu = new LatLng((float)currentLocation.getLatitude(), (float)currentLocation.getLongitude()); float zoom = (float) 10; mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(cu, zoom)); } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

ざっとみましたが、mStartがtrueにする処理が存在しないからじゃないでしょうか。
また、プログラムが動かない場合はブレークポイントを使い、どのような分岐をしているかを調査すると解決することができます。

投稿2016/01/22 02:24

yona

総合スコア18155

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hiryuuniziiro

2016/01/24 03:28

>ざっとみましたが、mStartがtrueにする処理が存在しないからじゃないでしょうか。 具体的にはどのように記述すればいいのでしょうか?
yona

2016/01/24 03:33

具体的な箇所はアプリの中でジョギングが開始になるタイミングだも思うので、私にはわかりません。 また、ブレークポイントを着けて実行して本当の原因を探った方がいいですよ。
hiryuuniziiro

2016/01/27 08:22

ありがとうございます mStartの部分をボタンでtrueにすることでできました おかげで解決しました
guest

0

加えてどのぐらいの距離走ったかも見るようにもしたいのですが、表示されませんでした。
それどころか初期位置は自分の位置を指定したと思っていたのですが、
まったく指定されていないといった状況です。

端末のGPS機能がoffになっていないですか?

地図を利用したアプリを作成したことがないので
これ以上は分かりません。
少しでも力になれれば幸いです。

投稿2016/01/22 02:16

u.-_-.u

総合スコア59

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hiryuuniziiro

2016/01/24 02:55

onにはなってるんで大丈夫です 返信ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問