Kotlinで地図アプリ(ゴミ拾いアプリ)作成。(5日目)


Kotlinで制作している、GoogleMapを使った、自作のゴミ拾いアプリ。制作5日目。

これまでの経過

1日目:Android Studio + Kotlin で開発環境作成。GoogleMapAPIアクセスキー取得。エミュで動作。
2日目:地図にマーカー表示・カスタム方法。マップ表示形式の変更。
3日目:現在地を取得し、地図上に表示。クリックイベント。
4日目:移動する際にマップがスクロールしなかった問題を修正。

※毎日やってる事
・Kotlin言語の勉強
・Android Studioの使用方法
・アイコンの作成方法など基本的なアプリの作り方など

本日の課題

回収したゴミの種類を大まかに「大」「中」「小」に分け、ボタンクリックで、位置情報を表示し、GETメソッドで、サーバーへデータを送信。

通信ライブラリとしてとりあえずvolleyを使用。

スマホから送信されたデータを、受信するサーバーは、有料契約済みのロリポップを使用。

通信ライブラリ volley

Volleyの利点

・ネットワーク リクエストの自動スケジューリング。 ・複数のネットワークの並行接続。 ・標準の HTTP キャッシュ コヒーレンシを備えた透過的ディスク / メモリ レスポンス キャッシュ。 ・リクエストの優先順位付けのサポート。 ・Cancellation request API。単一のリクエストのキャンセル、ブロックの設定、キャンセル リクエストの範囲の設定ができます。 ・容易なカスタマイズ(再試行、バックオフなど)。 ・強力な順序付けにより、ネットワークから非同期に取得されるデータを UI に正しく簡単に入力できます。 ・デバッグツールとトレースツール。

公式マニュアルに従い、build.gradleにimplementation を追加

build.gradle
dependencies {
    implementation 'com.android.volley:volley:1.1.1'

Volleyでシンプルな処理を実行テスト

マニフェストに android.permission.INTERNET パーミッションを追加

AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET" />

プロジェクトのクリーンアップ
[Build] -> [Clean Project]

MapsActivity.kt
import com.android.volley.Response
import com.android.volley.toolbox.JsonObjectRequest
import com.android.volley.toolbox.StringRequest
import com.android.volley.toolbox.Volley

....
    val queue = Volley.newRequestQueue(this)
    val url = "https://www.xxxxxxx.com/p/index.php?DATA=ゴミ拾いアプリ"
    lateinit var ResError:String

    val stringRequest = StringRequest(Request.Method.GET, url,
        Response.Listener<String> { response ->
            // Display the first 500 characters of the response string.
            //textView.text = "Response is: ${response.substring(0, 500)}"
        },
        Response.ErrorListener { ResError = "That didn't work!" })
    queue.add(stringRequest)

とりあえず、GETデータ受信側のサーバで、リクエストデータを受け取り、記録するだけのシンプルなコードを作成。

index.php
<?php
if(isset($_GET['DATA']) && $_GET['DATA'] != ''){
    file_put_contents("./data.txt", $_GET['DATA']);
?>

実行後、サーバー上のファイルを確認

data.txt
ゴミ拾いアプリ

今日はここまで。