[Android] twicca supporters

| トラックバック(0) |

twicca バージョン 0.9.0RC からアプリ内課金を利用した「twicca サポーター」が追加されました。

 

twicca サポーターとは?

twicca では今後の開発およびメンテナンスを続けるためのサポーターを募集しています。

サポーターの皆さんのお名前は『twiccaについて』の中に掲載させていただきます。

twicca サポーターになるにはサポーターチケットを購入してください。

 

早い話が、今まで「青山さん、俺だ!振込先を教えてくれー!」って言っていた人の思いが通じたということです。

 

購入するには、「メニュー」 > 「その他」 > 「twiccaサポーターズ」を選択後、

日数を選択し、「購入する」ボタンを、ポチるだけです。

※アプリ内課金は有料アプリと異なり、キャンセルできませんので、ご注意ください

※サポーターズチケットは、「7日間(1週間)105円」~選択できるようです(2011年5月5日現在)

 

twicca_supporters.png twicca_supporters2.png

twicca_supporters3.pngtwicca_supporters4.png

twicca_supporters5.png

 

購入後は、「メニュー」 > 「その他」 > 「twiccaについて」から、名前を確認できます。

twicca_supporters6.png

 

こういったアプリ内課金の使い方は、おそらく国内では初?と思われます。

素晴らしいアプリは評価される風土が根付いて欲しいですね。

2011年3月29日、東京電力の最大供給量と使用量を取得できる API が公開されました。

 

同 API については、先日(3月19日~21日)開催された Hack for Japan でも要望のあったものです。

Yahoo!デベロッパーネットワークさん、仕事が早いですね。さすが!

 

API 解説

 

本 API を使用することにより、東電の最大供給量と電力使用量を、XML または JSON 形式で取得できるようです。

ただし、期間限定の API であり、終了日は未定とのことです。

また、 API の使用にあたり、アプリケーションID が必要であり、かつ、

24 時間中 1 アプリケーション ID につき 50000 件のリクエストが上限とのことですので、注意が必要です。

(現実的には、キャッシュサーバー用意する必要あり?)

 

以下、早速 Android から呼び出してみました。

一応、API を簡単に使えるようなラッパークラスを作成し、2 行書けば取得できるようにしています。

※誌面の都合上、エラー処理や諸々省略しています

※完全なコードは、Google Code からチェックアウトできます

 

サンプルソースコード

public class SetsudenClient {
    private String mAppID;
    public SetsudenClient(String appID) {
        mAppID = appID;
    }
    public LatestPowerUsageResult getLatestPowerUsage() {
        LatestPowerUsageResult result = new LatestPowerUsageResult();
        // Build uri
        Uri.Builder uriBuilder = new Uri.Builder();
        uriBuilder.path("http://setsuden.yahooapis.jp/v1/Setsuden/latestPowerUsage");
        uriBuilder.appendQueryParameter("appid", mAppID);
        uriBuilder.appendQueryParameter("output", "json");
        String uri = Uri.decode(uriBuilder.build().toString());
        // Request HTTP GET
        HttpUriRequest httpGet = new HttpGet(uri);
        DefaultHttpClient defaultHttpClient = new DefaultHttpClient();
        try {
            HttpResponse httpResponse = defaultHttpClient.execute(httpGet);
            String stringEntity = EntityUtils.toString(httpResponse.getEntity());
            // Parse JSON result
            JSONObject jsonEntity = new JSONObject(stringEntity);
            if (jsonEntity != null) {
                JSONObject jsonElectricPowerUsage =
                    jsonEntity.optJSONObject("ElectricPowerUsage");
                if (jsonElectricPowerUsage != null) {
                    result.setArea(jsonElectricPowerUsage.optString("Area"));
                    JSONObject jsonUsage =
                        jsonElectricPowerUsage.optJSONObject("Usage");
                    if (jsonUsage != null) {
                        result.setUsageUnit(jsonUsage.optString("@unit"));
                        result.setUsageValue(jsonUsage.optInt("$"));
                    }
                    JSONObject jsonCapacity =
                        jsonElectricPowerUsage.optJSONObject("Capacity");
                    if (jsonCapacity != null) {
                        result.setCapacityUnit(jsonCapacity.optString("@unit"));
                        result.setCapacityValue(jsonCapacity.optInt("$"));
                    }
                    result.setDate(jsonElectricPowerUsage.optString("Date"));
                    result.setHour(jsonElectricPowerUsage.optString("Hour"));
                }
            }
        } catch (ClientProtocolException e) {
        } catch (IOException e) {
        } catch (JSONException e) {
        }
        return result;
    }
}

 

public class SetsudenYahooAPISampleActivity extends Activity {
    private static final String TAG = "SetsudenYahooAPISampleActivity";
    private static final String MY_APP_ID = "XXXXXXXXXX"; // 取得したappidで置き換えてください
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        // 非同期処理
        SetsudenClientTask setsudenClientTask = new SetsudenClientTask();
        setsudenClientTask.execute();
    }
    class SetsudenClientTask extends AsyncTask<Void, Void, LatestPowerUsageResult> {
        protected LatestPowerUsageResult doInBackground(Void... params) {
            // 電力使用状況APIのラッパークラスの呼び出し例
SetsudenClient setsudenClient = new SetsudenClient(MY_APP_ID); return setsudenClient.getLatestPowerUsage(); } protected void onPostExecute(LatestPowerUsageResult result) { // LogCat の出力結果
Log.v(TAG, "Area = " + result.getArea()); Log.v(TAG, "Usage = " + result.getUsageValue() + result.getUsageUnit()); Log.v(TAG, "Capacity = " + result.getCapacityValue() + result.getCapacityUnit()); Log.v(TAG, "Date = " + result.getDate()); Log.v(TAG, "Hour = " + result.getHour()); } } }

 

実行結果(DDMS のLogCat 画面)

ddms_output.png

google_code_android_screen_monitor.png

Android 端末(実機、またはエミュレーター)の画面をリアルタイムで PC 上に表示するツールである

Android Screen Monitor のソースコードを公開しました(Apache License 2.0)。

以下のサイトからチェックアウトできます。

 

android-screen-monitor - Project Hosting on Google Code

http://code.google.com/p/android-screen-monitor/

 

引き続き、製品のデモンストレーション、勉強会などのプレゼンテーション等でお使いいただければと思います^^

Androidify.png

Google から Androidify という Android Robot のアバターを作成できる Android アプリケーションがリリースされました。

 

概要

以下の動画のように、髪型や洋服などを選んでいくだけで、自分好みのアバターが作ることができます。

 

Androidify

以下の公式サイトからインストールすることができます。

※Android2.1以降で動作します
※日本語アプリ名は「Androidメーカー」
※Androidify is an application developed together by Google Creative Lab & Larva Labs.

 

早速作ってみました!

kuroharukakka.png

 。。。

ちなみに作成した画像については保存するだけでなく、他のアプリと共有できますので、Twitter に投稿してみても面白いかもしれません。

 

本日見た限りでは、Twitter のタイムラインに流れていた  「Twicca の作者さん(外部リンク)」 の以下の作品が秀逸でした(似すぎwww)。

R246.png

yahoo_map.png

2011年2月7日、「Yahoo!地図 SDK for Android」が公開されました。

 

Yahoo!地図 SDK for Android

 

概要

  • 「Yahoo!地図 SDK for Android」を使用することにより、「Yahoo!地図」と同じ地図データを利用できる
  • Android 2.1 以降で動作する
  • 有償で販売、またはアプリ内で課金してはいけない ※詳細は「Yahoo! JAPAN - サービス利用規約」(特に第5章)参照
  • アプリの配布時およびアプリ内において、「クレジット表示」が必要
  • 「Yahoo!デベロッパーネットワーク」の「アプリケーションID」が必要
  • 「Yahoo!地図 SDK for Android」には、Javaライブラリー(ymap.jar)と画像リソース(res)が格納されている
  • 「Yahoo!地図 SDK for Android ドキュメント」には、大変わかり易いHTMLが格納されている

 

サンプルソースコード 

package com.adakoda.android.yahoomapsample;

import jp.co.yahoo.android.maps.GeoPoint;
import jp.co.yahoo.android.maps.MapActivity;
import jp.co.yahoo.android.maps.MapController;
import jp.co.yahoo.android.maps.MapView;
import android.os.Bundle;

// 3. 「Yahoo!地図」を表示したいアクティビティを(jp.co.yahoo.android.maps.)MapActivity を継承して作成する
public class YahooMapSampleActivity extends MapActivity {
    private static final String APP_ID = "取得したアプリIDに書き変えてください!";
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 5. MapView を(アプリケーションID渡しで)生成し、
        // getMapController() で取得した MapController で、表示位置などの設定をする
        MapView mapView = new MapView(this, APP_ID);
        MapController c = mapView.getMapController();
        c.setCenter(new GeoPoint(35632385, 139881695)); // 初期表示の地図を指定
        c.setZoom(3); // 初期表示の縮尺を指定
        mapView.setMapType(mapView.MapTypeSatellite); // 航空写真表示(オプショナル)
        // 6. MapActivity に MapView を設定し、表示させる
        setContentView(mapView);
    }
    // 4. MapActivity.isRouteDisplayed をオーバーライドする
    @Override
    protected boolean isRouteDisplayed() {
        return false;
    }
}

1. SDK 内の「ymap.jar」を、組み込みたいアプリのプロジェクトに追加し、ライブラリーのパスを通す

2. SDK 内の「res/drawable-hdpi」下のpngファイル(6つ)を、組み込みたいアプリのプロジェクトにコピーする

3. 「Yahoo!地図」を表示したいアクティビティを(jp.co.yahoo.android.maps.)MapActivity を継承して作成する

4. MapActivity.isRouteDisplayed をオーバーライドする

5. MapView を(アプリケーションID渡しで)生成し、getMapController() で取得した MapController で、表示位置などの設定をする

6. MapActivity に MapView を設定し、表示させる

7. AndroidManifest.xml に android.permission.INTERNET を追加する

 

実行結果

TDR.png

Web Services by Yahoo! JAPAN

 

あわせて読みたい

market.png

2011年2月2日(現地時間)、Android Market (Web 版) がリニューアルされました。

 

Android Market web store ・・・Android Market (Web版)

 

今回のリニューアルにより、

PC からアクセスした Android Market (Web 版)から

スマートフォンやタブレットなどの Android 端末に Push(OTA)インストールができるようになりました。

 

 

早速、「(=x=)ヒャッハー」 を PC からインストールしてみました。

 

1. 右上の検索ボックスから 「ひゃっはー」 と入力したところ、

ぐぐるさんが 「DID YOU MEAN? ヒャッハー」 というように、あいまい検索結果やフィルタ検索にも対応しています。

market_search.png

 

2. 可愛らしいモグタソアイコンをクリックしてみると、Android 端末版の Android Market のようにアプリケーション情報が表示されます。

内容を確認し、アイコンの横にある 「INSTALL」 ボタンをクリックします。

market_app1.png

 

3. インストール先の Android 端末を選択し、「INSTALL」 をクリックします。

market_install1.png

 

4. すると、自動的に Android 端末側で Android Market からのアプリケーションのダウンロードが開始され、インストールが行われます。

※下図は、まさにクラウドからスマートフォンに、もの凄いスピードで (=X=) が侵略しようとしている決定的瞬間

market_install2.png

 

5. 以上で、インストール完了です。

ちなみに、Android Market サイトの下部にある 「My Market Account」 から、

「ORDERS」 タブで インストール済みのアプリケーションの一覧を閲覧、

「SETTINGS」 タブで 接続先デバイスの一覧の設定をすることもできます。

market_my_orders.png

 

 

これまでは、Web から Android アプリケーションをプロモーションする時には、

Android 端末専用の market プロトコルを使用するか、androlib などのサイトを利用していましたが、

今後は、単純な Web のリンク(http プロトコル)で済むようになったため、

これまで以上に、アプリケーションのプロモーションがし易くなったと思います。

google_cloud_print.png

2011年1月24日(現地時間)、Google Cloud Print (クラウドプリント)の beta 版が公開されました。

早速、Android (Xperia 2.1)から使ってみたところ、Google Docs 上のドキュメントを印刷することができました。

 

公式ブログ

 

利用要件

  • 印刷可能なドキュメントは、Google Docs、GMail のドキュメント
  • 印刷可能なモバイルデバイスは、Android 2.1 以降、iOS 3 以降
  • プリンターに接続可能な PC の OS は、Windows XP / Vista / 7
  • プリンターに接続可能なブラウザーは、Google Chrome 9.0.597.67 beta 以降

 ※上記は本稿の執筆時点のものであり、今後、Mac / Linux などにも対応する予定みたいです

 

事前準備

1. PC とプリンター(要プリンタードライバー)を接続し、オンラインにする。

2. 必要なバージョンの Google Chrome をインストールする。

3. PC から Chrome ブラウザーで「Connect a printer to Google Cloud Print」にアクセスする。

4. Google Chrome のメニュー(閉じるボタン下のスパナアイコン)「オプション」から、「高度な設定」タブを表示し、

 (一番下にある)「Google Cloud Print にログイン」ボタンをクリックし、Google アカウントでログインする。

 

Android 端末から Google Docs 上のドキュメントを印刷する手順

1. Android 端末のブラウザから、Google Docs にアクセスし、印刷したいドキュメントを開く。

2. メニューから「印刷...」をタップする。

3. 印刷に使用するプリンターを選択し、(右下にある)「Print」ボタンをタップする。

step1.png step2.png step3.png

 

動作結果から推測するに、Android 端末側は、あくまでも、Google Docs 上の印刷するドキュメントとプリンターを指定しているだけであって、

印刷データは、PC 上の Chrome ブラウザーがクラウド(Google Docs)からダウンロードし、

ブラウザーのレンダラーを用いて、印刷用のレンダリングを行い、

ブラウザーが動作している PC のプリンタードライバーに対して、印刷をしているだけみたいです。

※つまり、後半は、ブラウザーからクラウド上のデータを印刷したにすぎない

※特筆すべきは、モバイル端末から PC の IP アドレスを指定することなく、Google Cloud Print にログインされている PC に対し、
 印刷するドキュメントとプリンターを指定している点です

※今後、Google Cloud Print に対応したプリンターが登場すると、PC &プリンタードライバーレスで直接印刷できるみたいです

 

あわせて読みたい

Google の URL 短縮 API が(2011年1月10日に)公開されたので、早速、Android から呼び出してみました。

 

公式サイト

 

API 概要

API としては、Labs のステータスですが、短縮 <=> 展開の両方をサポートしています。

短縮は POST、展開は GET メソッドで、どちらもパラメータは、JSON 形式です。

リクエストに API Key を取得・設定しておくと、1日の上限リクエスト回数は、100万回となります。

apikey.png

 

サンプルコード

以下、「http://www.adakoda.com/」を、Google URL 短縮 API を呼び出し、

短縮した結果のURL「http://goo.gl/sGdK」を得るためのサンプルコードです。

 

String apiUri = "https://www.googleapis.com/urlshortener/v1/url";
// 以下の API Key を取得したものに置き換える(省略可)
String apiKey = "";
String postUrl = ""; // POST用URL文字列

// 短縮元URL文字列
String longUrl = "http://www.adakoda.com/";

// パラメーターに日本語を含む場合は下記のようにエスケープしてください
// Uri.Builder tmpUriBuilder = new Uri.Builder();
// tmpUriBuilder.path("http://www.google.co.jp/search");
// tmpUriBuilder.appendQueryParameter("q", Uri.encode("みっくみく"));
// longUrl = Uri.decode(tmpUriBuilder.build().toString());

// POST用URL文字列作成
Uri.Builder uriBuilder = new Uri.Builder();
uriBuilder.path(apiUri);
uriBuilder.appendQueryParameter("key", apiKey); // APIキー推奨
postUrl = Uri.decode(uriBuilder.build().toString());

try {
    // リクエスト作成
    HttpPost httpPost = new HttpPost(postUrl);
    httpPost.setHeader("Content-type", "application/json");
    JSONObject jsonRequest = new JSONObject();
    jsonRequest.put("longUrl", longUrl);
    StringEntity stringEntity = new StringEntity(jsonRequest.toString());
    httpPost.setEntity(stringEntity);
    // リクエスト発行
    DefaultHttpClient defaultHttpClient = new DefaultHttpClient();
    HttpResponse httpResponse = defaultHttpClient.execute(httpPost);
    int statusCode = httpResponse.getStatusLine().getStatusCode();
    if (statusCode == HttpStatus.SC_OK) {
        // 結果の取得
        String entity = EntityUtils.toString(httpResponse.getEntity());
        JSONObject jsonEntity = new JSONObject(entity);
        if (jsonEntity != null) {
            // 短縮URL結果 (このサンプルの場合、「http://goo.gl/sGdK」)
            String shortUrl = jsonEntity.optString("id");
            Log.v("id", shortUrl);
            Toast.makeText(this, shortUrl, Toast.LENGTH_LONG).show();
        }
    }
} catch (IOException e) {
} catch (JSONException e) {
}

 

実行結果

result.png

2009年~2010年末までに国内で発売された Android端末の公式リンク をまとめました(発売日が新しい順)。

 

以下の情報を参照できます。

  • 製品名・型番 (発売日 / キャリア / メーカー)
  • 製品スペック
  • サポート情報(アップデータ)
  • USB ドライバ(※Windowsで必要となるのですが、キャリアのサイトにないため結構見つけにくい・・・)
  • ユーザーズマニュアル

 

IDEOS (発売日2010年12月24日 / b-mobile / Huawei) ※2

※USBドライバはPCと接続してマウントされたCD-ROMにも格納されているそうです ※4

 

Libero SoftBank 003Z (発売日2010年12月24日 / SoftBank / ZTE)

 

SIRIUS α IS06 (発売日:2010年12月23日 / au by KDDI / PANTECH)

 

DELL Streak SoftBank 001DL (発売日2010年12月21日 / SoftBank / DELL)

※公式の USB ドライバ / PC接続系ソフトウェアの情報求む。。。(見つけられませんでしたT_T)
※1: Twitter にて何名かの方に教えていただきました。ありがとうございました。

 

HTC Aria S31HT (発売日2010年12月17日 / イー・モバイル / HTC) ※2

 

GALAPAGOS SoftBank 003SH (発売日2010年12月17日 / SoftBank / SHARP)

 

REGZA Phone T-01C (発売日:2010年12月17日 / NTT docomo / 富士通東芝)

 

LYNX 3D SH-03C (発売日:2010年12月3日 / NTT docomo / SHARP)

 

GALAXY Tab SC-01C (発売日:2010年11月26日 / NTT docomo / SAMSUNG)

 

IS03 (発売日:2010年11月26日 / au by KDDI / SHARP)

 

GALAXY S SC-02B (発売日:2010年10月28日 / NTT docomo / SAMSUNG)

 

HTC Desire HD SoftBank 001HT (発売日:2010年11月12日 / SoftBank / HTC)

 

HTC Desire SoftBank X06HTII (発売日:2010年10月2日 / SoftBank / HTC)

 

LYNX SH-10B (発売日:2010年7月23日 / NTT docomo / SHARP)


IS01 (発売日:2010年6月30日 / au by KDDI / SHARP) ※5

 

HTC Desire SoftBank X06HT (発売日:2010年4月27日 / SoftBank / HTC)

 

Xperia SO-01B (発売日:2010年4月1日 / NTT docomo / Sony Ericsson)

 

HT-03A (発売日:2009年7月10日 / NTT docomo / HTC)

 

※追記1(2011/01/05):Dell 「Drivers & Downloads」リンク追記

※追記2(2011/01/05):HTC Aria(イーモバイル)、IDEOS追記

※追記3(2011/01/05):Vendor ID(VID)、Product ID(PID)を追記

android SDK 標準のUSBドライバの(32bitの場合)[Google.NTx86]セクション、(64bitの場合)[Google.NTamd64]セクションに、
以下の記述を追加しても認識させることができます(XXXXは置換)

%SingleAdbInterface% = USB_Install, USB\VID_XXXX&PID_XXXX
%CompositeAdbInterface% = USB_Install, USB\VID_XXXX&PID_XXXX&MI_01

※追記4(2011/01/05): IDOES USBドライバの情報を追記

※追記5(2011/01/05): IS01追記

※追記6(2011/01/06): Xperia2.1のPID追加

[Android] 2010年未公開記事

| トラックバック(0) |

blog.PNG

いくつかの記事が下書きのままに未公開になってしまいましたので、その一部をトピックのみ報告させていただきます^^;

 

第2回 SHARPハッカソン@東広島に参加しました(2010/12/18-19)

SHARP 工場で開催された「第2回 SHARPハッカソン」に参加させていただきました。

当チームは、SHARP 製端末の歩計計 API を使用し、ダイエット IME である「歩meji」を開発、惜しくも 2 位という結果でしたが、

しかじろうさん、しげむらさん、あかいさん、SHARP の皆様と楽しく開発させていただきました。

交通費・懇親会・宿泊費・景品もろもろすべて準備していただいた SHARP さん、ブリリアントサービスさんに改めまして感謝です。

 

日本 Android の会 金沢支部勉強会に参加しました(2010/10/23, 3/13)

近場の勉強会が少ないということもあって、車で往復8時間かけて金沢まで遠征しました。

きんねこ さんをはじめ、多くの金沢クラスタの方々と楽しい時間を共有させていただきました。ありがとうございました。

 

長野でお蕎麦・温泉(2010/夏)

日本 Android の会の たじてるさん、(セカイカメ○の)わたなべさん、(ミ○のライブ壁紙の)ひょろもさん、○○さんを招き、

大都会の蕎麦と温泉を楽しみました。わざわざ遠方より駆けつけて頂き、ありがとうございました。大変楽しかったです。

 

Android 開発 最新動向レポート2010(2010/5/10)

「Google Android入門 ~携帯電話開発の新技術(技術評論社,2008)」の著者でもある嶋さんより お声をかけて頂き、

日本 Android の会の著名な方と共著で「Android開発 最新動向レポート2010」を執筆させていただきました。

貴重な体験をさせていただき、ありがとうございました。

※2010年とありますが、2010年5月発売(済)で、2010年3月くらいまでの内容となっていますので、ご注意ください

 

モテバッジ(Simeji バッジ2009年冬モデル?)を入手(2010/1/1)

Twitter ドリブン開発(TDD)による wimeji のご褒美?ということで、

Simeji の作者である adamrocker さんから Simeji バッジを頂きました。

(しかも、送料負担でわざわざ自宅宛に送付してくださった。)

ありがとうございました(あれっ、去年の元旦の話だry...)。

 

レビューできなかった雑誌・書籍たち

以前は、こまめにレビュー記事を書いていたのですが、

以下のものは購入したもののレビューが追いつかず、下書きのままになってしまいました^^;

いづれもお勧め良書ですので、書店で見かけたら手にとってみてください。

 

adakoda ブログ

pageview.PNG

サイトの年間のページビュー(2010年のみ)は、約160万PV でした。

しかしながら、書いた記事数は、245(2009年) → 108(2010年)に半減するなど、すっかり更新の頻度が下がってしまいました。

※特に後半は、「Y.A.M の 雑記帳」「Android(アンドロイド)情報-ブリリアントサービス」、他多数の良サイトの勢いに圧倒されてry...

 

2011 年もマイペースで更新しようと思いますので、よろしくお願いいたします^^;

<<前のページへ 345678910111213

2014年7月

    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31