Google+ Hangouts API を使う #3

[API] Google+ Hangouts API を使う #1 – Hangout プロジェクトを作成する
[API] Google+ Hangouts API を使う #2 – Hangout アプリケーションを記述する

Google+ Hangouts API (v1.2 / 2012年8月現在) > Running Hangout Apps 翻訳

アプリケーションのXMLを公開する

パブリックアクセス可能なURLに、ガジェットXMLファイルをアップして公開する必要があります。(Google App Engine のアプリケーションや、Google Project Hosting のレポジトリのような安定したURL)
続きを読む

Google+ Hangouts API を使う #2

[API] Google+ Hangouts API を使う #1 – Hangout プロジェクトを作成する

Google+ Hangouts API (v1.2 / 2012年8月現在) > Writing Hangout Apps 翻訳

Hangoutアプリケーションを記述する

Hangout アプリケーションは、基本的なHTML、JavaScript とCSSを使って記述します。 (必要なときに、アプリケーションはさらに任意のサーバーAPIと通信することができますが、それはこのドキュメントの範囲外です。)
starter app は、自分のアプリケーションに基礎として使用できる単純な骨組みです。
このページのほかのサンプルも参考にしてください。 ダウンロードした README.txt ファイルの手順に従ってください。

以下、アプリケーションを記述するために重要な3点。

 
 

Gadget XML(アプリケーションのメインになるファイル)

<?xml version="1.0" encoding="UTF-8" ?>
<Module>
  <ModulePrefs title="Your App Name">
    <Require feature="rpc"/>
    <Require feature="views"/>
  </ModulePrefs>
  <Content type="html">
    <![CDATA[
      <script src="//talkgadget.google.com/hangouts/_/api/hangout.js?v=1.2"></script>
      <!-- Your application code -->
    ]]>
  </Content>
</Module>

XMLファイルは、アプリケーションの名前(<ModulePrefs title=”Your App Name”>)とコードを置き換えて、サンプルコードXML に従ってください。 ModulePrefs セクションの”rpc” を Require してください(<Require feature=”rpc”/>)。
自分のアプリケーションにデータを渡したい場合は、”views”をRequireしてください(<Require feature=”views”/>)。

アプリケーションのコードは、標準のHTML、JavaScript、およびCSSで構成する必要があります。hangout にロードされたときに、Content要素の内容は、hangout 内部のiframe にロードされます。hangout.js ファイルを含めることによって、アプリケーションはHangouts JavaScript API にアクセスします。標準的なスクリプトやHTML要素のリンクを使用して、アプリケーションの外部JavaScript/CSSファイルの一部または全部を読み込むことができます。

Googleのサーバーによってフェッチされることができるように、 アプリケーションのXMLファイルは、パブリックアクセス可能なURLで公開する 必要があります。外部JavaScriptファイルとCSSファイルは、必ずしもパブリックURLでホストする必要はありませんが、hangout の参加者のブラウザからアクセスできるようにしてください。
 
 

Application state

Hangoutセッション中には、単一のstate objectがHangoutの全てのアプリケーションインスタンス間で共有されます。

  {
  'leader': participantId,
   'highScore': '112358132134'
  }

State values は文字列でなければなりません。
State にオブジェクトを格納したい場合は、それぞれ、それらをシリアル化および逆シリアル化するために JSON.stringify(obj)JSON.parse(obj) を使用することができます。

Application state は gapi.hangout.data名前空間 の関数を使用して管理、アクセスします。

 
 

Events

HangoutsAPI は、特定のアクションをトリガーするためにアプリケーションで使用できる多くのイベントが含まれています。 on*.add 関数のいずれかを使用して、特定のイベントが発生したときに呼び出されるコールバック関数を登録します。
(イベント >> API のReady状態。アプリケーションの表示。参加者がHangoutに参加。マイクがミュートされた。ボリュームの変更。共有状態の変更。通知の表示、など。)
on*.remove 関数を使用して、登録済みのイベントコールバックを削除します。

var onStateChange = function(eventObj) {
  for (var i = 0; i < eventObj.addedKeys.length; ++i) {
    foo(eventObj.addedKeys[i].key,
        eventObj.addedKeys[i].value,
        eventObj.addedKeys[i].timestamp);
  }
  for (var j = 0; j < eventObj.removedKeys.length; ++j) {
    bar(eventObj.removedKeys[j]);
  }
  state_ = eventObj.state;
  metadata_ = eventObj.metadata;
};
gapi.hangout.data.onStateChanged.add(onStateChange);

var onParticipantsChange = function(eventObj) {
  participants_ = eventObj.participants;
};

gapi.hangout.onParticipantsChanged.add(onParticipantsChange);

Tip:アプリケーションのコードがAPI が初期化された後にのみ実行されることを確認するには、ApiReady イベントを 取得するコールバックを登録してください。
gapi.hangout.onApiReady.add(function(eventObj){
  if (eventObj.isApiReady) {
    startMyApp();
  }
});

※そのほかのイベント詳細については APIリファレンスを参照してください。

[API] Google+ Hangouts API を使う #3 – Hangout アプリケーションを動作させる

Google+ Hangouts API を使う #1

Google+ Hangouts API (v1.2 / 2012年8月現在) > Getting Started 翻訳

1.Simple Hangout App をダウンロードしてホストする。

 
 

2.プロジェクトを作成する。

Google+ Hangouts APIを使う前に、Google APIs sconsole でプロジェクトを作成する必要があります。アプリケーションを Developer Sandbox で動作させるためにOAuth2.0 は必要ありません。

  ・ APIs console ページ を開く

  ・ 左メニューの上部の API Project プルダウンリストから Create をクリックし、プロジェクト名を入力する。

  ・ Google web service のリストが表示されるので、一覧から Google+ Hangouts API ON にし、サービスの使用条件に同意する。

 
 

3.Hangout App を動かす

   APIs console ページ の左メニューから Hangouts をクリックする。

  ・ Application URL のフィールドにXMLファイルのURLを入力する。  
    ex)http://url-to-your-xml-file  
    step1を省略した場合は、Google が既にホストしている public example XML file のURLを入力する。↓  
    https://plushangoutstarter.appspot.com/static/simpleHangoutApp.xml

  ・ Save ボタンをクリックする。
  ・ Save ボタンの下に Enter a hangout のリンクが表示される。左記のリンクをクリックして Hangout App を起動させる。

  ※ 起動した Hangout App は、 Developer Preview と表示されているように、Developer Sandbox 上で動作している。
このページのボタン等の詳細については、Running your app in Developer Sandbox を参照する。

[API] Google+ Hangouts API を使う #2 – Hangout アプリケーションを記述する

GoogleWeatherAPIから天気情報を取得する #2

APIから現在の天気ときょうの予報のみ取得する

※ Http通信で接続するため、manifestファイルにpermissionを追加する。

・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
// 取得するデータ
String c_condition;
String c_temp_f ;
String c_temp_c ;
String c_humidity ;
String c_wind ;
String t_low_temp;
String t_high_temp ;
String t_condition ;

// リクエストURL
String requestUrl= "http://www.google.com/ig/api?hl=ja&weather=fukuoka";

URL url = new URL(requestUrl);
// Http通信で接続する
HttpURLConnection http = (HttpURLConnection)url.openConnection();

// XmlPullParser オブジェクトを生成
XmlPullParser xpp = Xml.newPullParser();
// 取得したデータをStreamから直接読み込む
BufferedInputStream inBuffer = new BufferedInputStream(http.getInputStream());
// 日本語エンコード
BufferedReader reader = new BufferedReader(new InputStreamReader(inBuffer, "Shift_JIS"));
xpp.setInput(reader);

for(int e = xpp.getEventType(); e != XmlPullParser.END_DOCUMENT; e = xpp.next() ){
	String tag = xpp.getName(); //タグ名
			
	if(xpp.getDepth() == 3){ //3階層目
		boolean loop_break = false;	
				
		if("forecast_information".equals(tag)){
			do{	//必要ないのでループを進める
				xpp.next();
							
			}while(xpp.getDepth() == 4);
		}					
		//現在の天気データ
		if("current_conditions".equals(tag)){
			do{
				xpp.next();
				tag = xpp.getName();
							
				if(xpp.getEventType() == XmlPullParser.START_TAG){
					if("condition".equals(tag)){
						c_condition = xpp.getAttributeValue(0);
					}else if("temp_f".equals(tag)){
						c_temp_f  = xpp.getAttributeValue(0);
					}else if("temp_c".equals(tag)){
						c_temp_c  = xpp.getAttributeValue(0);							
					}else if("humidity".equals(tag)){
						c_humidity  = xpp.getAttributeValue(0);							
					}else if("wind_condition".equals(tag)){
						c_wind  = xpp.getAttributeValue(0);							
					}
				}							
			}while(xpp.getDepth() == 4);						
		}					
		//本日の天気予報データ	
		if("forecast_conditions".equals(tag)){
			do{
				xpp.next();
				tag  xpp.getName();
							
				if(xpp.getEventType() == XmlPullParser.START_TAG){							
					if("low".equals(tag)){
						t_low_temp = xpp.getAttributeValue(0);
					}else if("high".equals(tag)){
						t_high_temp  = xpp.getAttributeValue(0);
					}else if("condition".equals(tag)){
						t_condition  = xpp.getAttributeValue(0);
									
						//予報は本日分だけ取得するのでループを抜ける
						loop_break = true;
					}
				}
			}while(xpp.getDepth() == 4);
		}
					
		if(loop_break) break;
	}
}
reader.close();// BufferedReader を閉じる
inBuffer.close();// BufferedInputStream を閉じる
http.disconnect();// HttpURLConnection切断
  
HttpURLConnection(API Level1-)
Ref.) Android Developers>HttpURLConnection

XmlPullParser(API Level1-)
Ref.) Android Developers>XmlPullParser

BufferedInputStream(API Level1-)
Ref.) Android Developers>BufferedInputStream

BufferedReader (API Level1-)
Ref.) Android Developers>BufferedReader

GoogleWeatherAPIから天気情報を取得する #1

GoogleWeatherAPI …. 指定されたURLに場所情報を付与して送ると、ピンポイントの天気情報をxml形式で返すAPI。(※ただし、非公式)

URL) http://www.google.com/ig/api?weather=fukuoka

上記URLをブラウザでたたくと、以下のような結果がxmlで表示される。


















































 

【 取得できる情報 】

  • 現在の天気(current_conditions) … 天気、気温(華氏、摂氏)、湿度、天気のアイコン画像、風量
  • 予報データ(forecast_conditions) … 本日を含めて4日間の予報。天気、最高・最低気温、天気のアイコン画像。

 
● 天気情報の種類

  • Partly Sunny(ところにより晴れ)
  • Scattered Thunderstorms(激しいスコール)
  • Showers(にわか雨)
  • Scattered Showers(スコール)
  • Rain and Snow(雨と雪)
  • Overcast(曇天。曇りよりさらに曇った感じ?)
  • Light Snow(弱い雪)
  • Freezing Drizzle(霧雨)
  • Chance of Rain(雨の可能性)
  • Sunny(晴れ)
  • Clear(快晴)
  • Mostly Sunny(だいたい晴れ)
  • Partly Cloudy(ところにより曇り)
  • Mostly Cloudy(だいたい曇り)
  • Chance of Storm(嵐の可能性)
  • Rain(雨)
  • Chance of Snow(雪の可能性)
  • Cloudy(曇り)
  • Mist(霧)
  • Storm(嵐)
  • Thunderstorm(雷嵐)
  • Chance of Storm(嵐の可能性)
  • Sleet(みぞれ)
  • Snow(雪)
  • Icy(非常に寒い)
  • Dust(乾燥して埃っぽい?)
  • Fog(濃霧)
  • Smoke
  • Haze(かすみ、薄霧)
  • Flurries(突風)
  • Light Rain(弱い雨)
  • Snow Showers(吹雪)
  • Hail(あられ、ひょう)

 

● 天気アイコン画像の種類

  • weather_thunderstorms-40.gif
  • weather_partlycloudy-40.gif
  • weather_sunny-40.gif
  • weather_overcast-40.gif
  • weather_rainsnow-40.gif
  • weather_mostlycloudy-40.gif
  • weather_rain-40.gif
  • weather_scatteredthunderstorms-40.gif
  • weather_scatteredshowers-40.gif
  • weather_snowflurries-40.gif
  • weather_haze-40.gif
  • weather_smoke-40.gif
  • weather_fog-40.gif
  • weather_dust-40.gif
  • weather_icy-40.gif
  • weather_snow-40.gif
  • weather_sleet-40.gif
  • weather_cloudy-40.gif
  • weather_drizzle-40.gif
  • weather_windy-40.gif
  • weather_heavyrain-40.gif
  • weather_heavysnow-40.gif
  • weather_scatteredsnowshowers-40.gif