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)); } }
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/01/24 03:28
2016/01/24 03:33
2016/01/27 08:22