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

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

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

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

Android

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

Android Studio

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

解決済

Activityでは、位置情報を取得できたのに、Serviceではできないです。

atatatatata
atatatatata

総合スコア0

Java

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

Android

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

Android Studio

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

1回答

0評価

0クリップ

2005閲覧

投稿2017/07/29 08:33

編集2022/01/12 10:58

Serviceで、位置情報を取得したいです。

Activityでは、このようなコードで位置情報を取得できていたのですが、Serviceでは、エラーが出ます。エラーが出ます。アドバイスをいただけないでしょうか?

java

package com\.google\.android\.exoplayer2\.demo; import android\.app\.Service; import android\.content\.Intent; import android\.location\.Criteria; import android\.location\.LocationManager; import android\.os\.Binder; import android\.os\.IBinder; import android\.location\.LocationListener; import android\.content\.pm\.PackageManager; import android\.location\.Location; import android\.support\.v4\.app\.ActivityCompat; import android\.os\.Bundle; import android\.util\.Log; import com\.google\.android\.gms\.common\.ConnectionResult; import com\.google\.firebase\.database\.ChildEventListener; import com\.google\.firebase\.database\.DataSnapshot; import com\.google\.firebase\.database\.DatabaseError; import com\.google\.firebase\.database\.DatabaseReference; import com\.google\.firebase\.database\.FirebaseDatabase; import com\.google\.firebase\.auth\.FirebaseAuth; public class GpsService extends Service implements LocationListener{ private boolean mResolvingError = false; final FirebaseDatabase database = FirebaseDatabase\.getInstance\(\); private LocationListener sensorEventListener; // onPause\(\) public class GpsServiceBinder extends Binder { public GpsService getService\(\) { return GpsService\.this; } } @Override public void onCreate\(\) { super\.onCreate\(\); Log\.d\("onCreate\(\)","呼ばれた"\); } public GpsService\(\) { } //serviceだからいらないかも removeupdatesは必要 // @Override // protected void onPause\(\){ // super\.onPause\(\); // locationManager\.removeUpdates\(this\); // mLocationManager\.removeUpdates\(listener\); // } protected void initLocationService\(\) { Log\.v\("initLocationService\(\)", "呼ばれた"\); 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\) { return; } 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\) { return; } Criteria criteria = new Criteria\(\); criteria\.setAccuracy\(Criteria\.ACCURACY_FINE\); //setAccuracyは内部では、https://stackoverflow\.com/a/17874592/1709287の用にHorizontalAccuracyの設定に変換されている。 criteria\.setPowerRequirement\(Criteria\.POWER_HIGH\); criteria\.setAltitudeRequired\(false\); criteria\.setSpeedRequired\(true\); criteria\.setCostAllowed\(true\); criteria\.setBearingRequired\(false\); criteria\.setHorizontalAccuracy\(Criteria\.ACCURACY_HIGH\); criteria\.setVerticalAccuracy\(Criteria\.ACCURACY_HIGH\); // locationManager\.registerGnssStatusCallback\(\) // locationManager\.requestLocationUpdates\(gpsFreqInMillis, gpsFreqInDistance, criteria, this, null\); LocationManager locationManager = \(LocationManager\) getSystemService\(LOCATION_SERVICE\); String bestProvider = locationManager\.getBestProvider\(criteria, true\); locationManager\.requestLocationUpdates\(bestProvider, 6000, 1, this\); } @Override public void onLocationChanged\(Location location\) { Log\.v\("onLocationChanged", "呼ばれた"\); refreshGeoLocation\(location\); } //LocationListenerのメソッド @Override public void onStatusChanged\(String provider, int status, Bundle extras\) { } @Override public void onProviderEnabled\(String provider\) { } @Override public void onProviderDisabled\(String provider\) { } //ここまで // 位置情報のリスナーを取得して登録する //sensorEventListener = new GpsLocationListener\(sensorValueTextView\); // public class LocationServiceBinder extends Binder { // public com\.google\.android\.exoplayer2\.demo\.GpsService getService\(\) { // return com\.google\.android\.exoplayer2\.demo\.GpsService\.this; // } // } protected void refreshGeoLocation\(Location location\){ Log\.v\("refreshGeoLocation","呼ばれた"\); String user = FirebaseAuth\.getInstance\(\)\.getCurrentUser\(\)\.getUid\(\); DatabaseReference ref = database\.getReference\(\)\.child\("users"\)\.child\(user\); DatabaseReference latitudeRef = ref\.child\("latitude"\); DatabaseReference longitudeRef = ref\.child\("longitude"\); latitudeRef\.setValue\(location\.getLatitude\(\)\); longitudeRef\.setValue\(location\.getLongitude\(\)\); } @Override public IBinder onBind\(Intent intent\) { Log\.v\("onBind","呼ばれた"\); throw new UnsupportedOperationException\("Not yet implemented"\); } private void startLocation\(\) { Log\.d\("StartLocation","呼ばれた"\); initLocationService\(\); } private void stopLocation\(\) { Log\.d\("stopLocation","呼ばれた"\); //firebase\.auth\(\)\.signOut\(\);これでログアウトはできるが、ログアウトはしない database\.goOffline\(\); } //private final LocationListener listener = new LocationListener\(\) { @Override public int onStartCommand\(Intent intent, int flags, int startId\) { Log\.d\("onStartCommand","呼ばれた"\); String check =intent\.getStringExtra\("start/stop"\); if\(check\.equals\("start"\)\){ startLocation\(\); Log\.d\("StartLocation","呼ぶ"\); }else if\(check\.equals\("stop"\)\){ stopLocation\(\); Log\.d\("StopLocation","呼ぶ"\); } return super\.onStartCommand\(intent, flags, startId\); } @Override public void onDestroy\(\) { super\.onDestroy\(\); } public void movieAdapter\(DatabaseReference ref\) { ChildEventListener childEventListener = new ChildEventListener\(\) { @Override public void onChildAdded\(DataSnapshot dataSnapshot, String s\) { } //ここで、firebaseの変化を取得して、Toastを表示する @Override public void onChildChanged\(DataSnapshot dataSnapshot, String previousChildName\) { //``` Log\.v\("onChildChanged\(\)","呼ばれた"\); } @Override public void onChildRemoved\(DataSnapshot dataSnapshot\) { Log\.v\("onChildRemoved\(\)","呼ばれた"\); } @Override public void onChildMoved\(DataSnapshot dataSnapshot, String s\) { Log\.v\("onChildMoved\(\)","呼ばれた"\); } @Override public void onCancelled\(DatabaseError databaseError\) { Log\.v\("onCancelled\(\)","呼ばれた"\); } }; ref\.addChildEventListener\(childEventListener\); } }

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Java

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

Android

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

Android Studio

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