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

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

ただいまの
回答率

90.50%

  • Android

    6527questions

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

  • Firebase

    606questions

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

  • Google

    605questions

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

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

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 444

ehu

score 24

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を使う必要があるのでしょうか?

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

答えからいいますと,
 

わざわざ、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/04 23:58

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


    電池もちに関しては、考えてはいたんですけど、実際にやってみないと分かりませんね。

    キャンセル

  • 2017/11/05 07:27

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

    キャンセル

  • 2017/11/05 13:08

    これなら、できそうですね。やってみます

    キャンセル

  • 2017/11/06 12: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 12:38

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

    キャンセル

  • 2017/11/06 20:06

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

    キャンセル

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

  • ただいまの回答率 90.50%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    [Firebase]FBの友達のような関係のテーブルを作りたい

    facebookのように、お互いが許可するタイプの友達関係のデータベースを作りたいのですが、設計に悩んでいます。 https://teratail.com/questions

  • 受付中

    FCM プッシュ通知の瞬間表示ができない

    Androidアプリを作成し、プッシュ通知を実装しました。 プッシュ通知の受信はできています。 しかし、(Android6から機能追加された)「プッシュ通知の瞬間表示」を行いた

  • 解決済

    Firebase で network error が発生してしまう

    前提・実現したいこと Google Firebase の Authentication を使って,Webサイトを作ろうとしています. 手始めに auth().createUserW

  • 解決済

    Firebaseを導入したい

    Firebaseを導入しようとしていたのですが、このようなエラーが発生します。 Google Play Service と Google Repository は最新っぽいのですが

  • 受付中

    AndroidのFireBase使用のプロジェクトでClassNotFoundException

    タイトルの通りですが、 開発環境が2台あり、一方(プロジェクト作成時から使ってきたPC)ではすんなり起動できるのですが、 ソースをそのまま別のPCにコピーしてクリーンビルドすると、

  • 解決済

    firebaseドキュメントの.oneの意味

    https://firebase.google.com/docs/database/web/read-and-write?hl=ja このドキュメントでfirebaseのdat

  • 解決済

    Firebaseの上限に達してしまいました

    Firebaseの上限に達したので、プロジェクトを削除したのですがなぜか回復してくれません。1つしかプロジェクトがないのですが… プログラミングの質問でなくて恐縮ですが、プロジ

  • 受付中

    firebaseの利用例やノウハウを知りたい

    前提として現時点でWebアプリケーションフレームワークの代替になるのかどうかの結論が欲しいです。 firebaseのサイト構築のノウハウが公式のドキュメント以外にあれば知りたいです

同じタグがついた質問を見る

  • Android

    6527questions

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

  • Firebase

    606questions

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

  • Google

    605questions

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