• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:GPSで取得した値を別のクラスで利用する方法)

GPSで取得した値を別のクラスで利用する方法

このQ&Aのポイント
  • Javaの初心者が、AndroidアプリケーションでGPSで取得した値を別のクラスで利用する方法を知りたいです。
  • 具体的には、ロケーションリスナクラスで取得した緯度と経度の値を別のクラスで計算に利用する方法を教えてください。
  • お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • hitomura
  • ベストアンサー率48% (325/664)
回答No.2

えーと、前にも書いたとおりAndroidのことは知らないので外した意見になるかもしれませんが。 基本クラス名からすると位置情報のリスナークラスですよね? ということは、どこかでリスナーをシステムに登録する処理があるはずですよね? その登録しているコードをいじるというのはAndroidのアーキテクチャではやってはいけない、あるいは、設定で定義することなのでソースに手を入れられないなのでしょうか? 上記に問題が無いなら、そのリスナーのインスタンスの参照をアプリケーションでも持っておいて、その箇所で取得した参照からインスタンスにアクセスすれば位置情報が取得できるはずです。 もしその箇所をいじることができないなら、現在の位置情報リスナーを取得するメソッドはありませんか? もしあったならば、そのメソッドで取得したリスナーから位置情報が取り出せると思います。 リスナー登録の箇所はいじれない、リスナー取得メソッドも無い、というのであれば前回の私の回答は忘れてください。 そしてアプリケーション全体やアプリケーションの制御を現すクラスみたいなものがあって、そのインスタンスにはどこからもアクセスできるということはありませんか? そういったものも無いというのであれば私にはお手上げですが、アクセスできるのであればそのクラスに位置情報のセッター・ゲッターを設けて、リスナークラスでそのセッターを呼ぶという手があります。 # ごめんなさい、余り力になれなかったようです

golf-daisuki-kun
質問者

お礼

回答ありがとうございます! >どこかでリスナーをシステムに登録する処理があるはずですよね? >その登録しているコードをいじるというのはAndroidのアーキテクチャではやってはいけない、あるいは、設定で定義することなのでソースに手を入れられないなのでしょうか? リスナの登録について、システムサービスのLocationManager を取得したうえで、 requestLocationUpdates()の第4引数に位置情報が変更された時に処理を行うリスナSampleLocationListenerを登録しています。下記のとおりです。 requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, new SampleLocationListener()); だから、ソースに手は入れられないと思います。(回答になってますでしょうか?) >もしその箇所をいじることができないなら、現在の位置情報リスナーを取得するメソッドはありませんか?もしあったならば、そのメソッドで取得したリスナーから位置情報が取り出せると思います。 すいません、勉強不足でこのアドバイスは意味がよくわかりません。。。 2回も回答していただきありがとうございます! もう少し勉強してみます! もし何かアドバイスがあったらよろしくお願いします!

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • hitomura
  • ベストアンサー率48% (325/664)
回答No.1

こんなかんじでゲッターを設定じゃだめですか? Androidは知らないんだけどリスナーにはインターフェースの実装以外は書いちゃだめでしたっけ? class SampleLocationListener implements LocationListener { private double latitude; private double longitude; public double getLatitude() { return latitude; } public double getLongitude() { return longitude; } public void onLocationChanged(Location lc) { latitude = (double) (lc.getLatitude()); longitude = (double) (lc.getLongitude()); } public void onProviderDisabled(String pv){} public void onProviderEnabled(String pv){} public void onStatusChanged(String pv, int status, Bundle ex){} }

golf-daisuki-kun
質問者

お礼

回答ありがとうございます! 教えていただいた通りにロケーションリスナを入力し、外のクラスから SampleLocationListener sll = new SampleLocationListener(); double lt; lt = sll.getLatitude(); として緯度の値を取りに行きましたが、lt は常に 0.0 で、値を得ることができませんでした。 latitudeにGPS情報が入るのは、 public void onLocationChanged(Location lc) { latitude = (double) (lc.getLatitude()); longitude = (double) (lc.getLongitude()); } のメソッドの{}内のみで、その外にある public double getLatitude() { return latitude; } のlatitude には入力されないということでしょうか? もし原因がわかりましたら、回答いただけるとうれしいです。 よろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Androidアプリにて標高を取得する方法について

    こんにちは。最近Androidのアプリ作りを始めた者です。 今、google maps APIを用いて、現在地の緯度、経度、住所、標高の情報を取得するAndroidアプリケーション作りに励んでいます。 location.Geocoderクラスを用いて、GPSにて取得した緯度、経度情報を渡して住所情報を取得することができたのですが、同様の方法で標高の値を取得する方法がわからず困っています。 Google Elevation APIというものがあるようですが、これはandroidアプリからは参照することができないように思います。 importするだけでAndroidで簡単に高度を取得できるAPIをご存知の方がいらっしゃったら教えてほしいです。 なお、GPSのgetAltitude()の方法もあるのですが、精度がいまいちなのと、今後現在地と目的地のプロファイルを表示するアプリも作りたいので、やはり緯度経度を渡せば標高を返してくれる方法を知りたいです。 どなたかよろしくお願いします。

  • Eclipseエミュレータコントロールが動作しない

    はじめまして。Javaの初心者です。 Eclipseを用いて、GPS情報を取得して緯度・経度を表示させるAndroidアプリを試作しています。 試作したアプリをテストするため、Eclipseの「エミュレータコントロール」の Location Controls のマニュアルから緯度、経度情報を送信したいのですが、初めから入力されている 緯度:-122.084095 経度:37.422006 の値を変更することができません。 数字を入力する欄が機能しません。 また、送信ボタンも反応しません。 原因がわからず困っています。 どなたか詳しい方、対処法を教えてください。 よろしくお願いします。

    • ベストアンサー
    • Java
  • 緯度・経度の値が10進数で 35.68952904

    緯度・経度の値が10進数で 35.68952904385192 139.6917324140688 を示しています。 手元のコンパスが60度の方向を示していて、 この方向に1m進んだ場合、緯度・経度の値はどのようになりますか?できれば計算過程なども教えていただきたいです よろしくお願いします

  • 全パッケージの取得、全クラスの取得、全メソッドの取得

    やりたい事は、メインクラスより、同階層の全パッケージを取得(A)、 (A)より同階層の全クラスを取得(B)、 (B)より同階層の全メソッドを取得といったような事です。 例えば public class a { public static void main(String args[]) {  全パッケージの取得  全クラスの取得  全メソッドの取得 } } みたいな感じに。 試行錯誤したのですが、その処理を行う事の出来るメソッドかどうかも良く分からないし、 コンパイルエラーになるばかりで実現が出来ません。  ・メインクラスから同階層のパッケージを取得してパッケージ名を出力。  ・メインクラスからxパッケージ内の同階層のクラスを取得してクラス名を出力。  ・メインクラスからxパッケージにあるyクラス内のメソッドを取得してメソッド名を出力。 上記のようなめちゃくちゃシンプルなコードを挙げてご教示願います。

    • ベストアンサー
    • Java
  • リスナーを別クラスで書いた時のエラーの意味と原因?

       今晩は。  参考書を見ながら、リスナーを別クラスで書いてみました。  maクラスのコンストラクタを「public void ma」にすると「maのコンストラクタが未定義」 ですというエラーが出ます。  これはどのような意味でしょうか、よろしくお願いします。 ================================================================================= public class applet extends Applet { String s = "Hello" ; public void init() { addMouseListener(new ma(this)); } public void paint(Graphics g) { g.drawString( s , 60 , 60 ) ; } } class ma extends MouseAdapter { applet a ; public /*void*/ ma(applet ap) { a = ap ; } public void mouseClicked(MouseEvent e) { a.s = "JAVA" ; a.repaint() ; } }

    • ベストアンサー
    • Java
  • スーパークラスの取得の仕方

    どなたかお知恵を貸してください。 現在抽象クラスを作って表示をさせる実験をしています。 ですが、下記ソースでは、取得したnameをが参照することができません。 どのようにすれば、たまの名前を出すことが出来るのでしょうか よろしくお願いいたします。 abstract class Mammals { /** 名前を表す */ String name; abstract public void introduceOneself(); public void setName(String name) { name = name; } } class Cat extends Mammals { public Cat() { super(); } public void introduceOneself() { System.out.println(name+"です。うにゃにゃ。"); } } class Main { public static void main (String[] args) { Cat tama = new Cat(); //コンストラクタ呼び出し Mammals neko = tama; //コンストラクタ呼び出し neko.setName("たま"); //自己紹介する tama.introduceOneself(); //自己紹介する } }

    • ベストアンサー
    • Java
  • 指定地点(緯度・経度)から指定半径内にの地点情報(緯度・経度)を取得す

    指定地点(緯度・経度)から指定半径内にの地点情報(緯度・経度)を取得する方法がわかりません。 JavaとMySQLを使用して、DB内にデータ管理している施設情報を 現在地点(緯度・経度)と、半径距離数(100m,500m,1kmなど)を指定し、 その半径内の緯度・経度に含まれる施設情報を取得したいです。 http://d.hatena.ne.jp/ilo/20090212/1234448136 上記のサイトを参考にしていますが、距離からの度数の計算方法がわかりません。 Javaでの、距離からの度数の計算方法を教えてください。 宜しくお願いします。

  • ある特定の値(変数)を持たせたい時のクラスの設計法は?

    例えば、「人」クラスと、それを拡張した「杉山」、「鈴木」等具体的な名前を与えるクラスを設計する時、「名前」にあたるものはクラスを作った時点で分かるはずです。 また、「人」クラスをスーパークラスとして持つことも共通しています。 こういった場合、名前にあたる変数はどのように実装するべきなのでしょうか? 例えば、 class Person{ } class Suzuki extends Person{ String name = "suzuki"; } のように、するべきなのか class Person{    STring name_;    void setName(String name){       name_ = name;    } } class Suzuki extends Person{    setName("Suzuki"); } のようにするべきなのか、何がベターなのかよく分かりません。 出来れば、Personクラスを拡張したクラスには、忘れないようにnameフィールドに値を入れるようにしたいのですが、抽象クラスも何か違うのかなぁ…と(よく分かりませんが)。 よろしくお願いします。

    • ベストアンサー
    • Java
  • 座標系の原点の緯度経度とは?

    緯度経度の値から2点間の距離を求めようと思い調べたところ、以下のようなサイトが見つかりました。 [距離と方位の計算] http://vldb.gsi.go.jp/sokuchi/surveycalc/bl2stf.html ここで計算される測地線長がまさに求めたい値だったので、計算式を調べたところ、 (1)緯度経度から平面直角座標x,yを求める (2)2点の平面直角座標x,yから測地線長を求める という流れになるらしいことはわかりました。 ところが、さてプログラムで計算しようとしたところ、「座標系の原点の経度(緯度)」が計算式の値として必要だということが分かり、説明サイトをみると国土地理院のページが表示されて日本地図に関する座標系原点の緯経度が表示されています。 対象箇所が日本に限らないため何の値を参照してよいものが途方に暮れています。 そもそも座標系の原点とは、どこを指しているのでしょうか。 地図を描く上での原点となると、人によって異なるような。。。 この分野はまったくの素人です。 ご教授お願いいたします。

  • Googlemapで始点~次のステップ間の距離を

    私は現在、GoogleMapで現在地から指定した目的地までのルートを表示させたあとに、 始点(Start_location)から次のステップ(曲がり角)の緯度経度を次々と表示させていき、 最終的に 1、現在地の緯度経度 2、曲がり角(1)の緯度経度 3、曲がり角(2)の緯度経度 4、曲がり角(3)~ というようにを表示させたいのですが、 緯度経度(X,Y)を表示させると function (){return this[a]}  で文字が表示されます。 緯度経度を表示させるためにはどういった書き方なのかを教えてください。 計算を行っているソースは以下です。 //◆総距離合計 function computeTotalDistance(result) { var total = 0; var myroute = result.routes[0];     for (i = 0; i < myroute.legs.length; i++)     {     total += myroute.legs[i].distance.value;     }     total = total / 1000. var disp_total = document.getElementById("disp_total");     disp_total.innerHTML = "total:" + total + " km"; document.getElementById("X1").innerHTML = myroute.legs[0].start_location.lat;     document.getElementById("Y1").innerHTML = myroute.legs[0].start_location.lng;     document.getElementById("X2").innerHTML = myroute.legs[1].start_location.lat;     document.getElementById("Y2").innerHTML = myroute.legs[1].start_location.lng; }