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

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

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

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

Android

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

Android Studio

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

Q&A

解決済

1回答

402閲覧

Serviceが途中で停止している気がするのですが、何が原因でしょうか?どうぞよろしくお願いします。

atatatatata

総合スコア77

Java

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

Android

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

Android Studio

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

0グッド

0クリップ

投稿2017/07/29 13:51

編集2017/07/29 18:20

Serviceで、位置情報を取得して、変更されたら、firebaseに書き込むコードを書いたのですが、
public int onStartCommand(Intent intent, int flags, int startId) {
の中で、startLocation()を呼び出そうとしても呼び出せません。
Serviceが途中で停止している気がするのですが、何が原因でしょうか?

java

1package com.google.android.exoplayer2.demo; 2 3import android.app.Service; 4import android.content.Intent; 5import android.location.Criteria; 6import android.location.LocationManager; 7import android.os.Binder; 8import android.os.IBinder; 9import android.location.LocationListener; 10import android.content.pm.PackageManager; 11import android.location.Location; 12import android.support.v4.app.ActivityCompat; 13import android.os.Bundle; 14import android.util.Log; 15import com.google.android.gms.common.ConnectionResult; 16import com.google.firebase.database.ChildEventListener; 17import com.google.firebase.database.DataSnapshot; 18import com.google.firebase.database.DatabaseError; 19import com.google.firebase.database.DatabaseReference; 20import com.google.firebase.database.FirebaseDatabase; 21import com.google.firebase.auth.FirebaseAuth; 22 23public class GpsService extends Service implements LocationListener{ 24 25 private boolean mResolvingError = false; 26 final FirebaseDatabase database = FirebaseDatabase.getInstance(); 27 private LocationListener sensorEventListener; // onPause() 28 29 public class GpsServiceBinder extends Binder { 30 public GpsService getService() { 31 return GpsService.this; 32 } 33 } 34 35 @Override 36 public void onCreate() { 37 super.onCreate(); 38 39 Log.d("onCreate()","呼ばれた"); 40 } 41 42 43 44 public GpsService() { 45 } 46 47 //serviceだからいらないかも removeupdatesは必要 48// @Override 49// protected void onPause(){ 50// super.onPause(); 51// locationManager.removeUpdates(this); 52 // mLocationManager.removeUpdates(listener); 53// } 54 55 protected void initLocationService() { 56 Log.v("initLocationService()", "呼ばれた"); 57 58 if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 59 return; 60 } 61 if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 62 return; 63 } 64 65 Criteria criteria = new Criteria(); 66 criteria.setAccuracy(Criteria.ACCURACY_FINE); //setAccuracyは内部では、https://stackoverflow.com/a/17874592/1709287の用にHorizontalAccuracyの設定に変換されている。 67 criteria.setPowerRequirement(Criteria.POWER_HIGH); 68 criteria.setAltitudeRequired(false); 69 criteria.setSpeedRequired(true); 70 criteria.setCostAllowed(true); 71 criteria.setBearingRequired(false); 72 criteria.setHorizontalAccuracy(Criteria.ACCURACY_HIGH); 73 criteria.setVerticalAccuracy(Criteria.ACCURACY_HIGH); 74 75// locationManager.registerGnssStatusCallback() 76// locationManager.requestLocationUpdates(gpsFreqInMillis, gpsFreqInDistance, criteria, this, null); 77 78 LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); 79 String bestProvider = locationManager.getBestProvider(criteria, true); 80 locationManager.requestLocationUpdates(bestProvider, 6000, 1, this); 81 } 82 83 @Override 84 public void onLocationChanged(Location location) { 85 86 Log.v("onLocationChanged", "呼ばれた"); 87 refreshGeoLocation(location); 88 } 89 90 //LocationListenerのメソッド 91 @Override 92 public void onStatusChanged(String provider, int status, Bundle extras) { 93 94 } 95 96 @Override 97 public void onProviderEnabled(String provider) { 98 99 } 100 101 @Override 102 public void onProviderDisabled(String provider) { 103 104 } 105 106 107 //ここまで 108 109 // 位置情報のリスナーを取得して登録する 110 //sensorEventListener = new GpsLocationListener(sensorValueTextView); 111 112 113// public class LocationServiceBinder extends Binder { 114// public com.google.android.exoplayer2.demo.GpsService getService() { 115// return com.google.android.exoplayer2.demo.GpsService.this; 116// } 117// } 118 protected void refreshGeoLocation(Location location){ 119 Log.v("refreshGeoLocation","呼ばれた"); 120 String user = FirebaseAuth.getInstance().getCurrentUser().getUid(); 121 DatabaseReference ref = database.getReference().child("users").child(user); 122 DatabaseReference latitudeRef = ref.child("latitude"); 123 DatabaseReference longitudeRef = ref.child("longitude"); 124 latitudeRef.setValue(location.getLatitude()); 125 longitudeRef.setValue(location.getLongitude()); 126 } 127 128 @Override 129 public IBinder onBind(Intent intent) { 130 Log.v("onBind","呼ばれた"); 131 throw new UnsupportedOperationException("Not yet implemented"); 132 } 133 134 private void startLocation() { 135 136 Log.d("StartLocation","呼ばれた"); 137 initLocationService(); 138 } 139 140 private void stopLocation() { 141 Log.d("stopLocation","呼ばれた"); 142 //firebase.auth().signOut();これでログアウトはできるが、ログアウトはしない 143 database.goOffline(); 144 } 145 146 //private final LocationListener listener = new LocationListener() { 147 @Override 148 public int onStartCommand(Intent intent, int flags, int startId) { 149 Log.d("onStartCommand","呼ばれた"); 150 151 String check =intent.getStringExtra("start/stop"); 152 153 if(check.equals("start")){ 154 startLocation(); 155 Log.d("StartLocation","呼ぶ"); 156 }else if(check.equals("stop")){ 157 stopLocation(); 158 Log.d("StopLocation","呼ぶ"); 159 } 160 161 return super.onStartCommand(intent, flags, startId); 162 } 163 164 @Override 165 public void onDestroy() { 166 super.onDestroy(); 167 } 168 169 public void movieAdapter(DatabaseReference ref) { 170 ChildEventListener childEventListener = new ChildEventListener() { 171 172 @Override 173 public void onChildAdded(DataSnapshot dataSnapshot, String s) { 174 175 } 176 177 //ここで、firebaseの変化を取得して、Toastを表示する 178 @Override 179 public void onChildChanged(DataSnapshot dataSnapshot, String previousChildName) { 180 //``` 181 Log.v("onChildChanged()","呼ばれた"); 182 } 183 184 @Override 185 public void onChildRemoved(DataSnapshot dataSnapshot) { 186 Log.v("onChildRemoved()","呼ばれた"); 187 } 188 189 @Override 190 public void onChildMoved(DataSnapshot dataSnapshot, String s) { 191 Log.v("onChildMoved()","呼ばれた"); 192 193 } 194 195 @Override 196 public void onCancelled(DatabaseError databaseError) { 197 Log.v("onCancelled()","呼ばれた"); 198 } 199 }; 200 ref.addChildEventListener(childEventListener); 201 } 202} 203 204

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

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

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

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

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

guest

回答1

0

ベストアンサー

String check =intent.getStringExtra("start/stop"); の部分をデバッグして確認してみてください。 startstop 以外の値が入っていませんか? であれば呼ばれないのは正しい動作です。

投稿2017/07/29 18:22

ykws

総合スコア1236

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

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

atatatatata

2017/07/29 18:50

ありがとうございます。確認して見ます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問