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

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

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

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

Android

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

Q&A

解決済

4回答

2487閲覧

[Androidjava]setText();で出力されない

hinagesi_708

総合スコア7

Java

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

Android

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

0グッド

0クリップ

投稿2016/02/27 11:33

###前提・実現したいこと
AndroidjavaでGPSを使った位置情報出力アプリを作っています.
緯度,経度,高度を取得しAndroid画面に出力したいのですがうまく動きません。

###発生している問題・エラーメッセージ
問題
Android画面に何も出力されず真っ白
エラーメッセージ
02-27 20:14:18.270 19839-19839/? E/dalvikvm: could not disable core file generation for pid 19839: Operation not permitted
###ソースコード

java

1public class Gps03 extends Activity implements LocationListener { 2 private LocationManager manager = null; 3 private TextView latitude; 4 private TextView longitude; 5 private TextView altitude; 6 /** Called when the activity is first created. */ 7 @Override 8 public void onCreate(Bundle savedInstanceState) { 9 super.onCreate(savedInstanceState); 10 setContentView(R.layout.activity_gps03); 11 12 // GPSサービス取得 13 manager = (LocationManager)getSystemService(LOCATION_SERVICE); 14 latitude = (TextView)findViewById(R.id.latitude_id); 15 longitude = (TextView)findViewById(R.id.longitude_id); 16 altitude = (TextView)findViewById(R.id.altitude_id); 17 } 18 19 @Override 20 protected void onPause() { 21 // TODO Auto-generated method stub 22 if(manager != null) { 23 manager.removeUpdates(this); 24 } 25 super.onPause(); 26 } 27 28 @Override 29 protected void onResume() { 30 // TODO Auto-generated method stub 31 if(manager != null) { 32 manager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this); 33 } 34 super.onResume(); 35 } 36 37 @Override 38 public void onLocationChanged(Location location) { 39 // TODO Auto-generated method stub 40 String str = "緯度:" + location.getLatitude(); 41 latitude.setText(str); 42 str = "経度:" + location.getLongitude(); 43 longitude.setText(str); 44 str = "高度:" + location.getAltitude(); 45 altitude.setText(str); 46 } 47 48 @Override 49 public void onProviderDisabled(String provider) { 50 // TODO Auto-generated method stub 51 } 52 53 @Override 54 public void onProviderEnabled(String provider) { 55 // TODO Auto-generated method stub 56 } 57 58 @Override 59 public void onStatusChanged(String provider, int status, Bundle extras) { 60 // TODO Auto-generated method stub 61 } 62}

###補足情報
環境
開発環境:AndroidStudio 1.5.1
Android:HUAWEI P7 (Android 4.4.2)
補足
上記のプログラム内の

java

1manager.removeUpdates(this); 2manager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);

の部分に
Call requires permission which may be rejected by user: code should explicitly check to see if permission is available (with checkPermission) or explicitly handle a potential SecurityException
とあります.
AndroidManifest.xmlに以下のパーミッションは記述しています.

xml

1<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

GitHub
< https://github.com/hinagesi-708/Gps03 >

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

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

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

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

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

guest

回答4

0

GPSのみだと位置情報を取得するのに時間がかかる場合があります。
私の場合はXperia A wifiで、実家にいた場合、1時間とかかかる事がありました。

文字が表示されるかではなくonLocationChangedが呼びだされているか確認してみてください。

またプロバイダーの設定を以下のようにして複数設定すると良いと思います。(GPSにこだわりがなければ)

Java

1List<String> providers = locationManager.getProviders(true); 2 for (String provider : providers) { 3 locationManager.requestLocationUpdates(provider, time, distance, this); 4 }

投稿2016/02/28 01:43

sekitaka_1214

総合スコア509

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

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

0

ベストアンサー

LocationMangerのonStart()が実行されていないため、
onLocationChange()が実行されていない様です。

更新のタイミングをTimer等で定義し、
使用するタイミングにだけonStart()/onStop()を適宜実行してください。
onStart()しっぱなしだとバッテリがガンガン減っていくようですのでご注意ください。

もし、NetWorkによる精度向上を利用する場合は、マニフェストに以下のパーミッションの追加と、
requestLocationUpdates()呼び出しも必要です。

lang

1<uses-permission android:name=”android.permission.ACCESS_COARSE_LOCATION”/>

lang

1manager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, this);

以上、ご参考になりますでしょうか?

投稿2016/02/27 11:49

Aeona

総合スコア396

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

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

0

下記の確認をしてみてください。

・アプリ毎の設定画面で位置情報がオフになっていませんか。
・TextViewの文字の色はデフォルトで白色になっていることがあります。
文字の色を指定してみてはどうでしょうか。

また、アプリは正常に起動するが、正しく動かないのでしょうか。

投稿2016/02/27 11:45

yona

総合スコア18155

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

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

hinagesi_708

2016/02/27 14:06

>アプリ毎の設定画面で位置情報 とは何のことでしょうか? 文字の色を指定してみました.もとより文字の色は白ではなかったようですが,文字の色という発想はありませんでした.ありがとうございます. アプリは正常に起動するが正しく動かない,ということです.
yona

2016/02/27 14:21

設定アプリから行ける各アプリのデータの削除やアンインストールができる画面です。ただ、バージョンが4.4だから関係無いかもしれません。 一応確認してみてください。 また、追加でLocationListenerの各メソッドでログを表示するようにし どのメソッドが呼ばれているかを確認してください。
guest

0

字の色が白だったりしないでしょうか?
補足情報に関しては、マップ機能などを使おうとする際にGPSを起動しようとすると警告ダイアログが出ることがあります。これに関してユーザが拒否することができるため、そうなった場合のために、コードで事前にパーミッションがあるかどうかを確認する手続きを明示するか、潜在的に発生しうる例外をキャッチせよ、と言っています。

投稿2016/02/27 11:40

swordone

総合スコア20651

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

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

hinagesi_708

2016/02/27 14:04

字の色は白ではありませんでした. 補足情報に関してありがとうございます.現在の問題の解決後に対策します.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問