Google+‎ > ‎

Hangouts API 概要

目次

  1. 1 hangout.Participant
    1. 1.1 hangoutId
      1. 1.1.1 hasAppInstalled
      2. 1.1.2 id
      3. 1.1.3 displayName
      4. 1.1.4 image.url
  2. 2 hangout
    1. 2.1 初期化について
      1. 2.1.1 isApiReady()
      2. 2.1.2 ApiReadeyListenrがある
    2. 2.2 基本
      1. 2.2.1 isAppVisible()
      2. 2.2.2 hideApp()
      3. 2.2.3 AppVisibleListenerがある
      4. 2.2.4 getHangoutId()
      5. 2.2.5 getLocale()
      6. 2.2.6 getParticipantId()
    3. 2.3 閲覧者
      1. 2.3.1 getParticipants()
      2. 2.3.2 getParticipantById()
      3. 2.3.3 Participantの状態変化・Participantの追加・Participantの削除のリスナーがある
    4. 2.4 Notices
      1. 2.4.1 hasNotice()
      2. 2.4.2 displayNotice()
      3. 2.4.3 dismissNotice()
      4. 2.4.4 HasNoticeListenerがある
    5. 2.5 Active Speaker(現在の通話者)
      1. 2.5.1 getActiveSpeaker()
      2. 2.5.2 setActiveSpeaker(hangoutId)
      3. 2.5.3 clearActiveSpeaker()
      4. 2.5.4 ActiveSpeakerListener
  3. 3 hangout.av
    1. 3.1 hardware (ハード)
      1. 3.1.1 hasMicrophone()
      2. 3.1.2 hasCamera()
      3. 3.1.3 hasSpeakers()
      4. 3.1.4 MicrophoneListener・CameraListener・SpeakerListenerがある
    2. 3.2 AV Source Controls(AVソース)
      1. 3.2.1 getMicrophoneMute()
      2. 3.2.2 setMicrophoneMute(mute)
      3. 3.2.3 getCameraMute()
      4. 3.2.4 setCameraMute(mute)
    3. 3.3 AV Destination Controls(AV受け手側)
      1. 3.3.1 getParticipantVolume(participantId)
      2. 3.3.2 getVolumes()
      3. 3.3.3 isParticipantVisible(participantId)
      4. 3.3.4 setParticipantVisible(participantId,visible)
    4. 3.4 Avator(アバター)
      1. 3.4.1 getAvatar(participantId)
      2. 3.4.2 setAvator(participantId,imageUrl)
      3. 3.4.3 clearAvator(participantId)
  4. 4 hangout.data
    1. 4.1 getState()
      1. 4.1.1 getStateMetadata()
      2. 4.1.2 submitDelta(opt_updates,opt_removes)
      3. 4.1.3 StateChangeListenerがあります。
  5. 5 hangout.layout
    1. 5.1 chat
      1. 5.1.1 setChatPaneVisible()
      2. 5.1.2 isChatPaneVisible()
      3. 5.1.3 ChatPaneVisibleListener
    2. 5.2 Highlighting of Participants
      1. 5.2.1 getParticipantHighlight(participantId)
      2. 5.2.2 setParticipantHighlight(participantId)
      3. 5.2.3 clearParticipantHighlight(participantId)

公式情報

概要をまとめておいて、何ですが、まだプレビューなので仕様はユーザーからのフィードバック次第で変わりますし細かい所は気にしなくてもいいかもしれません。
この情報は、2011年9月25日時のものです。

hangout.Participant

閲覧者の情報

hangoutId

このハングアウトでのユーザー個別のID
hangoutのhangoutId()はハングアウトのIDなので別物

hasAppInstalled

アプリをインストールしているかどうか
(Previewだから、アプリを入れていない段階が想像できない)

id

Google+ id - アプリを入れていないと取れない

displayName

表示名 - これもアプリをインストールされていないと出てこない

image.url

アイコンURL - これもアプリをインストールされていないと出てこない


hangout

初期化について

isApiReady()

hangout APIが使えるかどうか、これは普通のgadgetからも呼び出せるけどfalseになる。

ApiReadeyListenrがある


基本

isAppVisible()

 アプリが見えてるかどうか。
スレッドで裏で処理する時に使うのだろう

hideApp()

アプリを隠す。アプリケーションボタンを押す前の段階に戻るだけ。(アプリケーションボタンを再度押すのと同じ)ただアプリはvisibleじゃなくなっただけで、生きてる。
もう1度アプリボタンを押すと、アプリがvisibleになる。



AppVisibleListenerがある


getHangoutId()

このハングアウトIDが取得可能。URLに出てるのと同じ
これを使って、外に今、ハングアウト中とか、対戦者募集とかできるのでしょう。

getLocale()

ロケール言語が出る。言語の表示切り替えに使う

getParticipantId()

自分(ローカル)のhangoutIdが取れる。
getParticipantById()で、自分のParticipantが取れる

閲覧者

getParticipants()

現在の閲覧者一覧が配列で取れる。もちろん自分(Local)も含まれる
自分のIDはgetParticipantId()

getParticipantById()

hangoutIDを渡すとPartipantが返ってくる。

Participantの状態変化・Participantの追加・Participantの削除のリスナーがある



Notices

ユーザーにお知らせする仕組み目立つ、画面上部に出るから、普通に表示するよりは、ユーザーに伝わりやすい。
特定のユーザーだけにお知らせするとかは、Stateなどで処理する問題


hasNotice()

Noticeが出ているかどうか、displayやdismiss直後に呼んだら、実際に表示・表示まで時間差があるのか、うまく取れない場合もある。


displayNotice()

お知らせを出す。メッセージは複数行は無理。opt_permanentは数秒後に自動で閉じるか、そのままにするかの違い
ただし、ユーザーはいつでもNoticeのボタンから閉じれる。

dismissNotice()

出ているお知らせを閉じる

HasNoticeListenerがある

Active Speaker(現在の通話者)

Active Speakerというのが、画面中央に出ている、現在話している人のこと。(アプリ画面隠さないと出てこないけど)
hangoutsではボリュームから自動で識別するらしいが(これも後でいろいろ問題でそう)

現在の通話者は、緑でハイライトされているけど、プログラムで変更した場合、変わらない理由は不明(緑は別の意味かもしれないが)

getActiveSpeaker()

現在のActive Speakerのhangout idを取得

setActiveSpeaker(hangoutId)

Active Speakerを変更する

clearActiveSpeaker()

初期のおまかせに戻る

ActiveSpeakerListener

Active Speakerの変更をキャッチ

hangout.av

hardware (ハード)

ユーザーのハード上にマイクとかが存在するか、スチッチのon/offとは別の話
通常のパソコンだと、両方端子がついてるのでマイクとスピーカーは通常有りになるだろう。
ユーザーが映像が送信できない問題の時、解決に役立つかも
(USBカメラつないでいるけど、cameraがfalseの場合は、ドライバーが入っていないなどでハード側の問題とか)

hasMicrophone()

マイクを実際に挿しているか、on/offではなく
ハード的に、マイクが使えるかどうか

hasCamera()

カメラがハード的にあるかどうか。
USBカメラだと、挿しているとtrueだし、抜くとfalseになる。

hasSpeakers()

ハード的にスピーカーがあるかどうか

MicrophoneListener・CameraListener・SpeakerListenerがある



AV Source Controls(AVソース)

内容はパネルにあるカメラはOff/マイクをOffと同じ


getMicrophoneMute()

マイクのミュートの状態を取得する

setMicrophoneMute(mute)

マイクのミュートの状態を変更する

getCameraMute()

カメラのミュートの状態を取得する

setCameraMute(mute)

カメラのミュートの状態を変更する

AV Destination Controls(AV受け手側)


受け手側の所の管理

getParticipantVolume(participantId)

指定の参加者のボリュームを取得
ボリュームは0から5の整数(この時点では少数ではなかった)

getVolumes()

すべての参加者のボリュームをまとめて取得

注意するべき点は、もし、keys()で取り出す場合、必ずしも順番は固定じゃない。
ランダムというわけでもなく、音量が大きい順に来てるような気もする。

isParticipantVisible(participantId)

指定の参加者の映像が見えているかどうか

setParticipantVisible(participantId,visible)

指定の参加者の映像の状態を変更する。そして通常、相手はこちらの状態を知ることはできない。

これをfalseにすれば、相手の映像が見えなくなる。(同様のことはAvatorで覆い隠すことでもできる)この機能はフロントパネルには無い。
相手の音声をoffにするファンクションはないが、コントロールのパネルより、ユーザーのサムネイルの所のマイクアイコンから参加者のマイクをOffにできる。

ただし、相手が再度マイクをonにすればonになってしまう。
まだプレビューなので、この当たりは未整備

Avator(アバター)

Avator(アバター)とは、参加者の動画の上に重なって表示される画像
透過画像を指定すると透明になる。そうでない画像を指定すると、引き伸ばされて表示されるので動画が見えなくなる。
まだプレビューなので、うまく表示できない画像もある(gifとか)

アプリケーション表示時には、見えませんが指定すると参加者一覧のサムネイルだけでなくメインにも影響するかもしれない。
(まだ実装中のため、正常に動いてません)

getAvatar(participantId)

指定の参加者のアバター(画像)のURLを取得できる。
画像が指定されていなければ、undefinedが返ってくる。

setAvator(participantId,imageUrl)

指定の参加者のアバターを指定する

clearAvator(participantId)

指定の参加者のアバターを消す

hangout.data

データー関連

Stateと呼ばれるデーターは参加者全員と値を共有できます。
そのかわり、読み書き共に遅いです。
ステートはキーも値も文字なObjectです。(javaでいうとMap<String,String>)

2つ押さえておくといいかも
たまに更新されないことがある。(retryもロジックに入れたい。)
頻繁に呼ばない(できたら更新したらChangeListenerで更新が反映されるまでは)

getState()

ステートを取り出します。

getStateMetadata()

メタデーター付きのステートを取り出します。
JavaでいうとMap<String,Metadata>です。

Metadataは次のようになっています。
key
value
timestamp 最終更新時
timediff ローカルアプリとサーバーの時差

このメタデータも形式はObjectなのですが、keyとvalueは文字列で、timestampとtimediffは数値になります。
(javaでいうとMap<String,Object>)

submitDelta(opt_updates,opt_removes)

値を更新します。opt_removesの方は削除するキーのArrayです。
使わない方はnullを指定でもかまいません。

このsubmitから更新までは多少時間かかります。
あと、頻繁に(10msおきに数十回とか)このメソッドを呼ぶと、更新リスナーが呼ばれない場合があります。

あと稀に更新に失敗するようです。

StateChangeListenerがあります。

追加・削除 StateにMetaと全部やってくるので扱いやすいです。



hangout.layout

見た目関連

chat

左側に出る、チャットエリアについて

setChatPaneVisible()

表示、非表示を切り替えることができる。
左下のチャットボタンと同じ効果

isChatPaneVisible()

現在、チャットエリアが表示されているかどうか

ChatPaneVisibleListener

チャットエリアの表示・非表示をキャッチ



Highlighting of Participants

ハイライトというのは、下の閲覧者の縁の色のようだ。
ここで有効にすると、黄色になる。(将来変更の可能性あり)
複数の閲覧者を同時にハイライトできる。
ユーザーがクリックすると変更のできる、現在のスピーカーは緑でハイライトされている。
緑でハイライトされていると、黄色はわからない。

緑にときに、もう1度押すと、青のハイライトに変わるが意味は現在調査中

getParticipantHighlight(participantId)

指定の閲覧者がハイライトされているか取得

setParticipantHighlight(participantId)

指定の閲覧者をハイライトする

clearParticipantHighlight(participantId)

指定の閲覧者のハイライトをクリアー無しにする。


Comments