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

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

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

GPSは、Global Positioning Systemの略です。衛星信号を使用して受信機の地上又は空中内の居場所を特定するナビゲーションシステムです。"GPS"は受信機のことも指します。

Android

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

Q&A

解決済

1回答

6403閲覧

Androidスマートフォンの現在地データをサーバーに送信する方法

horisuke3232

総合スコア109

GPS

GPSは、Global Positioning Systemの略です。衛星信号を使用して受信機の地上又は空中内の居場所を特定するナビゲーションシステムです。"GPS"は受信機のことも指します。

Android

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

1グッド

1クリップ

投稿2016/02/13 10:58

編集2016/02/15 10:55

以前こちら
https://teratail.com/questions/26472
で質問させていただいて、回答に取得した現在位置をサーバーに送信する。とありました。
そこで実際に試してみようと思い、以前使っていたAndroid端末を準備しました。
サーバーはAWSを使おうと思います。

初歩的で申し訳ないのですが、Android端末からGPS情報を取得しAWSに送るにはどのようにするのでしょうか?

インターネットで調べたところ、gps情報を発信するためのコードがありました。こちらのコードを使って送信したいと考えています。

LocationSenderService.javaファイルに
private final String server = "http://192.168.0.4/";
とあるので、こちらのURLをAWSに変更すれば送れるものなのでしょうか?

HTMLとCSSについてはある程度わかるのですが、それ以外については操作したことがありません。
先ほど、Androidstudioをインストールしたレベルです。。。

JAVA

1 2**GPSTest1.java** 3 4package com.example.gpstest1; 5import android.os.Bundle; 6import android.app.Activity; 7import android.content.Intent; 8import android.view.Menu; 9import android.view.View; 10import android.view.View.OnClickListener; 11import android.widget.Button; 12import android.widget.Toast; 13 14public class GPSTest1 extends Activity implements OnClickListener { 15 16 private Button btnSendStart; 17 private Button btnSendStop; 18 19 @Override 20 protected void onCreate(Bundle savedInstanceState) { 21 super.onCreate(savedInstanceState); 22 setContentView(R.layout.activity_gpstest1); 23 24 btnSendStop = (Button)findViewById(R.id.btnSendStop); 25 btnSendStart = (Button)findViewById(R.id.btnSendStart); 26 27 btnSendStop.setOnClickListener(this); 28 btnSendStart.setOnClickListener(this); 29 30 } 31 32 @Override 33 protected void onDestroy() { 34 35 Intent locationSenderService = new Intent(GPSTest1.this, LocationSenderService.class); 36 stopService(locationSenderService); 37 38 super.onDestroy(); 39 } 40 41 @Override 42 public void onClick(View view) { 43 // TODO Auto-generated method stub 44 if (view == btnSendStop) { 45 Intent locationSenderService = new Intent(GPSTest1.this, LocationSenderService.class); 46 stopService(locationSenderService); 47 48 btnSendStop.setEnabled(false); 49 btnSendStart.setEnabled(true); 50 } else if (view == btnSendStart) { 51 Intent locationSenderService = new Intent(GPSTest1.this, LocationSenderService.class); 52 startService(locationSenderService); 53 54 btnSendStop.setEnabled(true); 55 btnSendStart.setEnabled(false); 56 57 } 58 } 59 60} 61

JAVA

1**LocationSenderService.java** 2 3 4package com.example.gpstest1; 5import java.io.IOException; 6 7import org.apache.http.client.HttpClient; 8import org.apache.http.client.methods.HttpGet; 9import org.apache.http.impl.client.DefaultHttpClient; 10 11import android.app.Service; 12import android.content.Intent; 13import android.location.Location; 14import android.location.LocationListener; 15import android.location.LocationManager; 16import android.os.Bundle; 17import android.os.Handler; 18import android.os.IBinder; 19import android.widget.Toast; 20 21public class LocationSenderService extends Service implements LocationListener { 22 23 private final String server = "http://192.168.0.4/"; 24 private final String path = "PHP/LocationLogger.php"; 25 private String username = "pondelion"; 26 private LocationManager lm; 27 28 @Override 29 public IBinder onBind(Intent arg0) { 30 // TODO Auto-generated method stub 31 return null; 32 } 33 34 @Override 35 public void onCreate() { 36 super.onCreate(); 37 lm = (LocationManager)getSystemService(LOCATION_SERVICE); 38 39 lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 60000, 0, this); 40 lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 60000, 0, this); 41 42 Toast.makeText(this, "サービス開始", Toast.LENGTH_LONG).show(); 43 44 } 45 46 @Override 47 public void onDestroy() { 48 lm.removeUpdates(this); 49 50 } 51 52 @Override 53 public void onLocationChanged(Location location) { 54 // TODO Auto-generated method stub 55 String url = server 56 + path 57 + "?username=" 58 + username 59 + "&latitude=" 60 + location.getLatitude() 61 + "&longitude=" 62 + location.getLongitude() 63 + "×tamp=" 64 + System.currentTimeMillis(); 65 66 try { 67 HttpClient httpClient = new DefaultHttpClient(); 68 httpClient.execute(new HttpGet(url)); 69 Toast.makeText(getApplicationContext(), "位置を送信しました", Toast.LENGTH_LONG).show(); 70 } catch (IOException e) { 71 Toast.makeText(getApplicationContext(), "Error : " + e.getMessage(), Toast.LENGTH_LONG).show(); 72 } 73 } 74 75 @Override 76 public void onProviderDisabled(String arg0) { 77 // TODO Auto-generated method stub 78 79 } 80 81 @Override 82 public void onProviderEnabled(String arg0) { 83 // TODO Auto-generated method stub 84 85 } 86 87 @Override 88 public void onStatusChanged(String arg0, int arg1, Bundle arg2) { 89 // TODO Auto-generated method stub 90 91 } 92 93}
mhashi👍を押しています

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

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

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

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

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

yona

2016/02/13 12:25

何もしていない状態から質問をしても解決には至らないと思いますよ。 コードなどを追記してください。
guest

回答1

0

ベストアンサー

あんまり綺麗なソースではないですが、自分が流用しているpost送信用クラスです。

android

1package com.example.gcmsample; 2 3import java.io.IOException; 4import java.io.UnsupportedEncodingException; 5import java.net.URI; 6import java.net.URISyntaxException; 7import java.util.ArrayList; 8 9import org.apache.http.HttpResponse; 10import org.apache.http.HttpStatus; 11import org.apache.http.NameValuePair; 12import org.apache.http.client.ResponseHandler; 13import org.apache.http.client.entity.UrlEncodedFormEntity; 14import org.apache.http.client.methods.HttpPost; 15import org.apache.http.impl.client.DefaultHttpClient; 16import org.apache.http.message.BasicNameValuePair; 17import org.apache.http.util.EntityUtils; 18 19import android.app.IntentService; 20import android.content.Intent; 21import android.util.Log; 22 23/** 24 * An {@link IntentService} subclass for handling asynchronous task requests in 25 * a service on a separate handler thread. 26 * <p> 27 * TODO: Customize class - update intent actions, extra parameters and static 28 * helper methods. 29 */ 30public class MyIntentService extends IntentService { 31 // TODO: Rename actions, choose action names that describe tasks that this 32 // IntentService can perform, e.g. ACTION_FETCH_NEW_ITEMS 33 private String message,title; 34 private String ret; 35 private String URL = "https://xxxxxxxxxxxxxxxx/"; 36 37 public MyIntentService(String name) { 38 super(name); 39 // TODO 自動生成されたコンストラクター・スタブ 40 41 } 42 43 public MyIntentService() { 44 // TODO 自動生成されたコンストラクター・スタブ 45 super("MyIntentService"); 46 } 47 48 @Override 49 protected void onHandleIntent(Intent intent) { 50 // TODO 自動生成されたメソッド・スタブ 51 52 // Log.d("IntentService", "onHandleIntent Start"); 53 // InputDialogからのintent受取後、文字列に 54 message = intent.getStringExtra("message"); 55 title = intent.getStringExtra("title"); 56 Log.d("***INTENT***", URL); 57 58 exec_post(); 59 60 } 61 62 // POST通信を実行(AsyncTaskによる非同期処理を使わないバージョン) 63 private void exec_post() { 64 65 try { 66 Thread.sleep(3000); 67 } catch (InterruptedException e2) { 68 // TODO 自動生成された catch ブロック 69 e2.printStackTrace(); 70 }; 71 72 73 // Log.d("posttest", "postします"); 74 ret = ""; 75 // URL 76 URI url = null; 77 try { 78 url = new URI(URL); 79 Log.d("posttest", "URLはOK"); 80 } catch (URISyntaxException e) { 81 e.printStackTrace(); 82 ret = e.toString(); 83 } 84 85 // POSTパラメータ付きでPOSTリクエストを構築 86 HttpPost request = new HttpPost(url); 87 ArrayList<NameValuePair> post_params = new ArrayList<NameValuePair>(); 88 post_params.add(new BasicNameValuePair("message", message)); 89 post_params.add(new BasicNameValuePair("title", title)); 90 try { 91 // 送信パラメータのエンコードを指定 92 request.setEntity(new UrlEncodedFormEntity(post_params, "UTF-8")); 93 } catch (UnsupportedEncodingException e1) { 94 e1.printStackTrace(); 95 } 96 97 // POSTリクエストを実行 98 DefaultHttpClient httpClient = new DefaultHttpClient(); 99 try { 100 Log.d("posttest", "POST開始"); 101 ret = httpClient.execute(request, new ResponseHandler<String>() { 102 103 @Override 104 public String handleResponse(HttpResponse response) 105 throws IOException { 106 Log.d("posttest", "レスポンスコード:"+ 107 response.getStatusLine().getStatusCode()); 108 109 // 正常に受信できた場合は200 110 switch (response.getStatusLine().getStatusCode()) { 111 case HttpStatus.SC_OK: 112 Log.d("posttest", "レスポンス取得に成功"); 113 114 // レスポンスデータをエンコード済みの文字列として取得する 115 return EntityUtils.toString(response.getEntity(), 116 "UTF-8"); 117 118 case HttpStatus.SC_NOT_FOUND: 119 Log.d("posttest", "データが存在しない"); 120 return null; 121 122 default: 123 Log.d("posttest", "通信エラー"); 124 return null; 125 } 126 127 } 128 129 }); 130 131 } catch (IOException e) { 132 Log.d("posttest", "通信に失敗:" + e.toString()); 133 } finally { 134 // shutdownすると通信できなくなる 135 httpClient.getConnectionManager().shutdown(); 136 } 137 138 } 139 140} 141

投稿2016/02/18 12:29

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問