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

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

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

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

Android

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

Android Studio

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

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

2回答

2740閲覧

自分のパソコン上の仮想サーバに自分の端末の位置情報を送りたい

per

総合スコア10

GPS

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

Android

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

Android Studio

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

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2016/11/14 07:39

編集2016/11/14 08:42

###前提・実現したいこと
現在gpsを利用した鬼ごっこアプリを開発しています。下記のコードはメインのコードです。
「onLocationChanged」ってメソッドが、位置情報が更新されたときに呼び出されるものになります。
それが実行されると、現在地の緯度と経度を「latlng」っていう変数に格納して、その位置にマーカー(アイコン画像)を表示して、マップの真ん中に来るようにカメラを移動させるという動きをします。
###発生している問題・エラーメッセージ

latlngに格納した自分の位置情報を自分のパソコン上の仮想サーバに送るというプログラムをどうやってかけばよいか
わかりません。

###該当のソースコード
package ***;

import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.location.Location;
import android.location.LocationManager;

import android.location.LocationProvider;
import android.os.CountDownTimer;
import android.preference.PreferenceManager;
import android.provider.Settings;
import android.support.v4.app.ActivityCompat;
import android.support.v4.app.FragmentActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;

import android.location.LocationListener;
import android.widget.Toast;

import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.Marker;
import com.google.android.gms.maps.model.MarkerOptions;

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback, LocationListener {

private GoogleMap mMap; private Marker marker = null; private LocationManager locationManager; private TextView timerText; private int times; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_maps); // Obtain the SupportMapFragment and get notified when the map is ready to be used. SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map); mapFragment.getMapAsync(this); locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); 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) { ActivityCompat.requestPermissions(this, new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION,}, 1000); } else{ locationStart(); } SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); String time = sharedPreferences.getString("time", "3"); if (time.equals("3")){ times = 180000; }else{ times = 300000; } } public void onMapReady(GoogleMap googleMap) {

###補足情報(言語/FW/ツール等のバージョンなど)
・java
・Android Studio

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

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

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

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

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

guest

回答2

0

LAN環境であれば、自分のパソコン上の仮想サーバとAndroidを同じネットワークに接続します。
仮想サーバでは位置情報を受け取るEndpointを用意してあげてください。

例:http://192.168.1.100/upload

そこにお好きな方法で位置情報をアップロードしてあげてください。

例:http://192.168.1.100/upload?LatLng=35.681298,139.7640582

インターネット環境を使いたいのであれば、グローバルIPアドレスからあなたの自分のパソコン上の仮想サーバ上まで届くようネットワークの設定をしてあげてください。
環境によりどう対応するか変わってきますが、直接グローバルIPを付けるも良し、NATしてあげるもよし。

あとはIPアドレスが変わるだけの話です。
http://xxx.xxx.xxx.xxx/upload?LatLng=35.681298,139.7640582

投稿2016/11/14 09:46

moonphase

総合スコア6621

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

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

0

ちょっと前の質問見て危なそうだなと思ったのでコメントさせていただきます。

awsはアカウント作成にクレジットカードが必要です。
後、MFA認証等で最低限のセキュリティ対策をしないとハッキングされて莫大な請求が来るという話も有りえます。

商用ならまだしも、aws上でサーバー立てるくらいなら、
自分のパソコン上で簡易サーバー立てる方がはるかに簡単です。
授業の課題ならその時だけ動いていれば十分でしょう。

投稿2016/11/14 08:29

編集2016/11/14 08:30
ishi9

総合スコア1294

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

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

per

2016/11/14 08:40

ご回答ありがとうございます。 確かに授業の発表でしか使わないので自分のパソコン上で仮想サーバを作った方がはるかに良さそうです。 そうしようと思います!
ishi9

2016/11/14 09:59 編集

クライアント側(今の質問)はサーバー側のAPIの仕様が決まればそう難しくはないですが、 サーバーができてないと書きようがありません。 まずは頑張ってサーバー側のプログラムを作る必要があります。 そして、「aws上で立てるくらいなら自分で立てる方がはるかに簡単」と言いましたが、 aws上で作るほうがはるかに面倒なだけで、自分で立てるのも(初めてだと)相当大変です。 1ヶ月は覚悟した方がいいと思います。 後、GPSは精度がかなり低いのはご存知ですか? 仮に全プレイヤーが100m四方の部屋(体育館でもちょっときつい?) にいたら見分けが付かないなんて普通に起こり得えます。 10m四方程度の教室だとほとんどゲームにはならないでしょう。 正直、かなり無謀に見えるので少し企画の内容を検討してみた方がいいかもしれません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問