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

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

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

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Android

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

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

Q&A

解決済

1回答

344閲覧

Google Assistantから自作Androidアプリのメソッドを呼び出したい

退会済みユーザー

退会済みユーザー

総合スコア0

Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Android

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

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

0グッド

0クリップ

投稿2017/10/30 14:55

編集2017/10/31 01:06

Android初心者です。冗長な部分があると思いますが、指南お願いします。

やりたいこと

Google Assistantから自作Androidアプリのメソッドを呼び出したい。

勿論自分でも考えましたが、これと言ってよい方法が見つかりません。

質問

  • 下記の「自分なりに考えた方法」でメソッドの呼び出しは可能でしょうか?
  • 他に方法がありましたら教えてください。

具体例

AndroidのGoogle Assistantに、「呼び出して」という。すると、常駐したAndroidアプリのバイブレーションを起こすメソッドを呼び出して、バイブレーションが起こす。

AndroidのGoogle Assistantに、「呼び出して」という。すると、常駐したAndroidアプリの現在の時刻を通知するメソッドを呼び出して、Androidの通知欄に現在の時刻を表示。

※メソッドの部分は自分なりに変更したい、Androidアプリはバックグラウンドで動くようにする。

自分なりに考えた方法

その1

  1. Google Assistant
  2. IFTTT(This:Google Assistant,That:Webhook)
  3. Webhock
  4. Firebase
  5. 自作Androidアプリ

IFTTTとFirebaseを使う方法です。こちらに似たような方法の記事があります。その1の方法はこの記事で言うと、「ラズパイ」を「自作Androidアプリ」に置き換えています。つまりは、FirebaseのDatabaseを監視し、更新があれば、更新内容に従い自作Androidアプリのメソッド実行するということです。

その2

  1. Google Assistant
  2. Action on GoogleのFirebase
  3. 自作Androidアプリ

記事
その1と似ている。IFTTTをAction on Googleに置き換えた方法。

疑問

これ以上他の方法が思いつきませんが、わざわざ、Firebaseを使う必要があるのでしょうか?

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

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

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

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

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

guest

回答1

0

ベストアンサー

答えからいいますと,

わざわざ、Firebaseを使う必要があるのでしょうか?

むしろ使ったほうが楽です.

「自分なりに考えた方法」でメソッドの呼び出しは可能でしょうか?

その2はもう少し工夫する必要があります.
その1は可能ですが,Firebase realtime database ではなく Firebase Cloud Messagingのほうが適切かもしれません.

解説

 

「自分なりに考えた方法」でメソッドの呼び出しは可能でしょうか?

まず,両者の記事でのFirebaseの使い方が違うことに注意してください.
(Firebaseは多数のサービスの集合体なのです)

その1の記事では,ehuさんも書かれている通り,Firebase realtime databaseに書き込まれたものを,クライアント側から監視しています.
しかしその2の記事の場合,Firebase内の別サービスであるCloud Functions for Firebaseを使ってサーバ側処理を行っているのです.
(このサービスは,サーバの管理に手間をかけることなくサーバ側処理を行うための便利なサービスです)

更にその2の記事では,最後はActions On Googleに戻せば済みます.
しかしehuさんは最後を自作Androidアプリにするのですから,その2を利用するならば,その間の通信を追加で考える必要があります.
(この場合でもrealtime databaseが楽だとは思います,サーバ‐クライアント間同期が容易なサービスのため)

ただしどちらにするにせよ,電池持ちは一応気を付けたほうがいいかもしれません.
その1の記事では、ラズパイに電源あるのが前提だと思われます.
realtime databaseとその監視する部分だけを試しに作ってみたほうが安心かもしれません.
(もし電池消費が激しい場合は,Firebase Cloud Messagingという通知やデータをプッシュするサービスのほうがいいかもしれません.バックグラウンドで動かしたいなら尚更

わざわざ、Firebaseを使う必要があるのでしょうか?

上記とも被りますが,サーバ‐クライアント間同期が容易であること,今後の拡張性,など踏まえると,むしろ至れり尽くせりなFirebaseを使うのが簡単だと思います.
ehuさん自身の今後にも役立てられるかと.

長くなりすみません.多少込み入った話なので.
ご参考になれば幸いです.

投稿2017/11/01 15:22

Yatima

総合スコア1159

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

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

退会済みユーザー

退会済みユーザー

2017/11/04 14:58

ご回答ありがとうございます。自分の理解力が足りないかもしれないですが、質問があります。 > もし電池消費が激しい場合は,Firebase Cloud Messagingという通知やデータをプッシュするサービスのほうがいいかもしれません Firebase Cloud Messagingはメッセージを配信するためのサービスなので、Androidのメソッドを実行できないと思いますが、どうでしょうか? 電池もちに関しては、考えてはいたんですけど、実際にやってみないと分かりませんね。
Yatima

2017/11/04 22:27

通知メッセージとデータメッセージという2種類があり,後者なら可能です.   https://firebase.google.com/docs/cloud-messaging/concept-options#data_messages > Android では、クライアント アプリが onMessageReceived() でデータ メッセージを受信し、それに応じて Key-Value ペアを処理することができます。 > Android では、アクティビティを起動するために使用されるインテントでデータ ペイロード(内容のこと)を取得できます。
退会済みユーザー

退会済みユーザー

2017/11/05 04:08

これなら、できそうですね。やってみます
退会済みユーザー

退会済みユーザー

2017/11/06 03:19

FCMを使いたいのですが、iftttからThis:googleassistant,That:webhookでFCMを送信できません。HeaderにAuthorizationが設定できない為です。 FCMの実装はこの記事を参考にしました https://chenpilog.com/2016/10/14/android-notification-firebase/ RestletCliantで動作確認後、iftttのwebhookからhttpリクエストしようとしたところ、headerがカスタマイズできないことに気づきました。 http://yamamotomanabu.hatenablog.com/entry/2015/10/31/IFTTT%E3%81%AEMaker%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB%E3%81%8B%E3%82%89%E7%99%BA%E8%A1%8C%E3%81%95%E3%82%8C%E3%82%8BHTTP%E3%83%AA%E3%82%AF%E3%82%A8%E3%82%B9%E3%83%88%E3%81%AE%E3%83%98 >ボディの内容は自由にカスタマイズできるのですが、ヘッダーは「Content-Type」以外カスタマイズできないことでした。認証系の情報をヘッダーに付与するシーンはよくあると思うので、それができないのは人によっては少し不便ですね。 他の方法でGoogleAssistantからHeaderを指定できるhttpリクエストサービスはありますか?
退会済みユーザー

退会済みユーザー

2017/11/06 03:38

補足 因みに、、Actions on googeのwebhookなら、haederを指定できるのですが動作が面倒です。 その1のiftttを使えば、「呼び出して」のワンフレーズで呼び出しがききます。もし、その2のActions on googleならば「??につないで」のフレーズが必要です。その後、「呼び出して」を言うことになります。
Yatima

2017/11/06 11:06

煩雑になってきましたし、題意とも異なってきましたし、自分はあまり明るくないもので、新しく質問を立て直したほうがいいのではないでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問