MacでAndroidウィジェットにUber配車機能を組み込む方法

※本ページにはプロモーション(広告)が含まれています。
MacでAndroidウィジェットにUber配車機能を組み込む方法

MacでAndroidウィジェットからUberを呼び出したいけれど環境設定や連携方法でつまずいて先に進めないと感じている方へ。

この記事を読むとMac上での開発環境を素早く整え実機やエミュレータで確実にUber配車を呼び出すための実践的な手順と現場で役立つトラブル対処法が身につきます。

項目内容
独自コンテンツ1Mac上でAndroidStudioとADBを使ってウィジェット開発環境を最短で整える手順。
独自コンテンツ2UberのディープリンクとOAuthを組み合わせて確実に配車を呼び出す実装パターン。
独自コンテンツ3エミュレータと実機でのテスト手順とAppStore公開時に役立つ注意点。

手順はわかりやすく分割してあるので一つずつ試していけば必ず動くようになります。気軽に手を動かして一緒に完成させていきましょう。

Android博士

最初は戸惑うかもしれませんが一歩ずつ進めば必ず形になります。失敗してもそれが一番の学びになりますから安心して取り組んでくださいね。

目次

MacでAndroidウィジェットからUber配車を呼び出す基本の作り方

MacでAndroidウィジェットからUber配車を呼び出す基本の作り方

MacからAndroidウィジェットでUber配車を呼び出すときは、手早く配車画面を開くだけの方法と、ETAや料金をウィジェット上に表示してから配車する方法の、大きく2つのアプローチがあります。まずはディープリンクでUberアプリを起動して配車画面へ飛ばすシンプルな流れを押さえ、その次にWebAPIで情報を取ってウィジェットを賢くする流れを学ぶと効率よく進められます。

必要なものはMacとAndroidStudioと実機、adbコマンド、そしてUberの開発者アカウントです。ウィジェットの基礎がわかっていれば手順に沿って実装すれば動くので、怖がらずにトライしてみてください。

  • ディープリンク方式: 簡単に配車画面を開く。実装が短くてトラブルが少ない。
  • UberWebAPI方式: ETAや料金を表示してから配車する。ユーザー体験を向上できるが認証や定期更新が必要。

Uberアプリのディープリンクでウィジェットから配車画面を開く方法

Uberアプリのディープリンクでウィジェットから配車画面を開く方法

Uberアプリのディープリンクを使うと、ウィジェットからワンタップで配車画面を開けます。Intentに専用のURIを設定してPendingIntentでボタンに紐付けるだけなので、まずはここから着手すると気持ちが楽になります。

実装のコアはURIの組み立てとPendingIntentの作り方です。起動できない場合はURIエンコードやIntentフラグ、アプリのインストール有無をチェックすると原因が見つかりやすいです。

app/src/main/res/layout/widget_layout.xmlで配車ボタンを作る

手順
レイアウトファイルを作る

app/src/main/res/layout/widget_layout.xmlを用意してRemoteViewsで使うルートのLinearLayoutやConstraintLayoutを定義します。

手順
配車ボタンを追加する

ButtonやImageButtonを配置してandroid:idを付けます。ウィジェットでは標準のViewバインディングは使えない点に注意してください。

手順
見た目を整える

テキストやアイコンは小さくても見やすいようにし、重要な要素はcontentDescriptionで補います。

AppWidgetProviderのonUpdateでPendingIntentを作成してボタンにセットする

手順
Intentを作る

配車用のURIをセットしたIntentを作成します。通常はACTION_VIEWでuriにuberスキームを入れます。

手順
PendingIntentを作成する

PendingIntent.getActivityを使いFLAG_UPDATE_CURRENTを指定して作成します。ウィジェットからのクリックでアプリを開けるようにします。

手順
RemoteViewsに紐付ける

AppWidgetManagerでRemoteViews.setOnClickPendingIntentを呼んで、ボタンに作成したPendingIntentをセットします。

ディープリンクにpickupとdropoffパラメータを載せてIntentで起動する実装方法

  • 基本URI例: uber://?action=setPickup&pickup[latitude]=35.681236&pickup[longitude]=139.767125で出発地を指定できます。
  • 到着地を付ける例: &dropoff[latitude]=35.658034&dropoff[longitude]=139.701636を追加すると目的地を設定できます。
  • 値はURLエンコードが必要です。スペースや特殊文字は必ずエンコードして渡してください。

Macでadbを使って実機にインストールしウィジェットを配置して動作確認する

手順
アプリをビルドしてAPKを生成する

AndroidStudioでreleaseまたはdebugビルドを作成します。adbでのインストール用にAPKまたはAppBundleを用意します。

手順
adbで端末にインストールする

ターミナルでadb install -r path/to/app.apkを実行して実機に上書きインストールします。インストールに失敗したらUSBデバッグの許可を確認してください。

手順
ウィジェットを配置して動作確認する

端末のホーム画面でウィジェット一覧から追加し、ボタンをタップしてUberアプリが起動するかを確認します。

Uber Web APIを使ってウィジェット上にETAや料金を表示する方法

Uber Web APIを使ってウィジェット上にETAや料金を表示する方法

Uber Web APIを使うとウィジェット上にETAや予想料金を表示できます。ユーザーに情報を先に見せてから配車ボタンを押させることで体験を良くできるので、少し手間をかける価値があります。

認証や定期的な更新の仕組みが必要になるので、WorkManagerで定期取得し、RemoteViewsに反映する流れを作ることをおすすめします。トークン管理は必ず安全な方法で行ってください。

WidgetUpdateWorkerなどで定期的にUber APIを呼ぶ実装場所と流れ

手順
Workerを作る場所

androidx.work.WorkerやCoroutineWorkerを用意して、アプリのworkerパッケージに配置します。

手順
定期実行のスケジュール

WorkManagerでPeriodicWorkRequestを作成して定期的にAPIを叩きます。実行間隔はバッテリー負荷を考えて設定します。

手順
ウィジェット更新の流れ

API結果を取得したらAppWidgetManagerにRemoteViewsを組み直してupdateAppWidgetを呼びます。

EncryptedSharedPreferencesにアクセストークンを安全に保存するやり方

  1. MasterKeyを作成する: androidx.security.crypto.MasterKey.Builderで安全なキーを生成します。
  2. EncryptedSharedPreferencesを生成する: EncryptedSharedPreferences.createでファイル名とMasterKeyを渡してインスタンスを作ります。
  3. アクセストークンの保存と取得: edit().putString(“uber_token”,token).apply()で保存し、getStringで取得します。

RemoteViewsにAPIレスポンスを反映しウィジェットから配車リクエストを送る方法

手順
APIレスポンスを解析する

WorkerやServiceで取得したJSONからETAや料金を取り出して必要な文字列を作ります。

手順
RemoteViewsに反映する

RemoteViews.setTextViewTextやsetImageViewResourceでウィジェットの表示を更新してAppWidgetManager.updateAppWidgetを呼びます。

手順
ウィジェットから配車リクエストを送る

配車ボタンのクリックに、アクセストークンを使って自サーバーやアプリ内のServiceを経由してリクエストを投げるPendingIntentを紐付けます。

MacでAndroidウィジェットをエミュレータと実機で素早くテストする方法

MacでAndroidウィジェットをエミュレータと実機で素早くテストする方法

MacでAndroidウィジェットを手早くチェックしたい時は、エミュレータと実機を両方用意すると安心です。エミュレータで見た目を素早く確認してから実機で挙動を確かめる流れが失敗を減らします。

エミュレータはAVDのスナップショットやクイックブートを活用すると起動が速くて快適です。実機はDeveloperOptionsでUSBデバッグを有効にしておくと差し替えやログ確認がスムーズに進みます。

この記事ではまずエミュレータでの即時確認のやり方を紹介してから、USB接続した実機でのadbを使ったデバッグのやり方を解説します。小さなコツで反復テストがずっと楽になります。

Android博士

最初は設定が多くて戸惑うかもしれませんが一つずつ確認すれば大丈夫です。エミュレータで見た目を確かめてから実機で最終チェックに進むやり方が安心です。

Macのエミュレータでウィジェットを即座に確認する手順

Macのエミュレータでウィジェットを即座に確認する手順

エミュレータでウィジェットを素早く確認するには、まずAndroidStudioのAVDでGoogleAPI付きのイメージを選びます。ランチャーを表示してウィジェットをホームに追加すればレイアウトやサイズ感をすぐにチェックできます。

AVDはスナップショットを有効にしてクイックブートを使うと再起動時間が短くなります。コードを少し変えたらAndroidStudioのApplyChangesやapk差し替えで更新を試し、見た目の差分を確認してください。

Android StudioのApply Changesでウィジェット関連のコードを素早く反映する方法

手順
ApplyChangesを使う準備

AndroidStudioでデバッグビルドを選びます。InstantRunの後継機能としてApplyChangesが有効なら差分だけを適用できます。

手順
ウィジェット関連の変更を適用

レイアウトやリソースの小さな変更はApplyChangesで反映できます。ただしAppWidgetの初期化処理を変えた場合は完全再起動が必要になることがあります。

手順
反映されない時の対処

ApplyChangesで変わらない時はランチャーを再起動するかアプリを一度アンインストールしてから再インストールすると確実に反映します。

MacとUSB接続した実機でadbを使ってデバッグする手順

MacとUSB接続した実機でadbを使ってデバッグする手順

Macと実機をUSB接続してのデバッグは、まず実機でUSBデバッグを有効にしておくことが肝心です。接続後にMacのターミナルでadb devicesを実行してデバイスが表示されれば準備完了です。

apkを差し替える時はadb install -rで上書きインストールすると便利です。更新後はadb logcatでウィジェットに関するログを確認し、必要ならアプリから明示的に更新ブロードキャストを投げて挙動を確認してください。

adb install -rでapkを差し替えしadb logcatでウィジェット更新ログを絞り込む方法

手順
apkを上書きする

端末が接続されたらMacのターミナルでadb install -r your_app.apkと実行して差し替えます。アンインストールの手間が省けて繰り返しテストが楽になります。

手順
ログを絞り込む

adb logcatで出力してからパッケージ名やAppWidgetのタグで絞り込むと必要なログだけ追いかけられます。実行中にウィジェットを操作してログの変化を確認してください。

手順
更新を確実に反映させる

差し替え後にウィジェットが更新されない時はアプリからAPPWIDGET_UPDATE相当のブロードキャストを投げるかランチャーを再起動して状態をクリアします。

Macで作ったAndroidウィジェットにUber機能を付けたあとの応用例

Macで作ったAndroidウィジェットにUber機能を付けたあとの応用例

機能を付けたあとは遊び心を発揮して広げていけます。たとえばワンタップでよく行く場所に配車したり、カレンダーの予定から自動で配車候補を表示したり、到着予定を友だちに共有するような使い方が考えられます。

実際の開発ではウィジェット側で重い処理をしないことが肝心です。認証トークンや位置情報は安全に保存して、定期更新はバックグラウンド処理(画面に触らなくても動く処理)に任せると安定します。

見た目は小さくても使いやすさで差が出ますから、行き先のラベルやアイコンで直感的に操作できるようにすると喜ばれます。Macで開発するときは実機での動作確認をこまめに行うとデバッグが早く終わります。

ワンタップでよく使う行き先に配車するウィジェットを作るパターン

ワンタップでよく使う行き先に配車するウィジェットを作るパターン

ワンタップでよく使う行き先に配車するパターンは、ウィジェットにお気に入りボタンを並べてタップで配車Intentを発行するのが基本です。深い配車処理は別のサービスやActivityに渡して、ウィジェットは呼び出しに専念させると動作が軽く感じられます。

行き先データはSharedPreferencesや簡単なローカルDBに保存しておくと扱いやすいです。長押しで編集や削除を出すと自由度が上がり、ユーザー体験が良くなります。

ウィジェット内で行き先履歴を保存してRemoteViewsでワンタップ呼び出しを実装する

手順
行き先データを保存する

ボタンに対応する行き先をSharedPreferencesや小さなDBに保存します。ラベルと緯度経度かプレイスIDをセットで持つと扱いやすいです。

手順
RemoteViewsでボタンを描画する

ウィジェット更新時に保存済みデータを読み込みボタンを並べます。各ボタンにPendingIntent(後で実行するためのIntent)をセットしておくとタップで動きます。

手順
タップで配車を呼び出す

ボタンタップ時に保存した行き先からUberのディープリンクやIntentを組み立てて起動します。UIは最小限にして呼び出しまでの時間を短くするのがコツです。

よくある質問

よくある質問
MacからAndroidウィジェットでUberを呼べますか

はい。ただしMacで直接ウィジェットを走らせるのではなく、Macを使ってAndroidアプリを作りビルドし、実機のウィジェットからUberのURLスキームやIntentで起動します。実際にやるときはOAuthやDeepLinkの仕様確認が必要です。

必要な準備は何ですか

AndroidStudioをMacに入れ、実機をUSBまたはネットワークで繋げてテストできる状態にします。Uberの開発者アカウントでクライアントIDを取得し、DeepLinkのテスト用URLを用意しておくとスムーズです。

気をつけるセキュリティポイントは

クライアントシークレットを端末に直書きしないこと、通信は必ずHTTPSで行うことが大事です。OAuthトークンは安全に保存し有効期限を扱うロジックを入れておくとユーザーに優しいです。

まとめ

まとめ

ここまで読んでくれてありがとう。MacでAndroidウィジェットからUber配車を呼ぶ流れは、開発環境の準備、ウィジェット側で送るURLスキームの作成、Mac上でのADB転送やエミュレータ連携を使った動作確認というシンプルな流れです。段階を小さく分けて動かすと迷子になりにくいです。

つまずいたらまずはログを見て、権限周りとDeepLinkのレスポンスをチェックしてください。Uberのリンク仕様は変わることがあるので、エラーハンドリングとリトライ処理を入れておくと運用が楽になります。安全に配慮して少しずつ本番準備を進めてください。

Android博士

最初はうまくいかなくても大丈夫です。少しずつ動かして確認する習慣をつけると、次第に自信がつきますから気軽に試してみてください。

実運用ではAPIキーやユーザーデータの扱いに十分注意し、機密情報を公開リポジトリに置かないでください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次