2011年6月23日木曜日

Android WebView loadDataメモ

WebViewはwebページ表示するために使うものと思ってたけど、htmlの文字列を渡して表示もできるってことに気づいた。htmlの方が慣れてるし、けっこう便利!ちょっとハマった点メモ。

2011年6月17日金曜日

jQueryでAjax

DroidgapでWebアプリをAndroidアプリに変換してみる 」で書いたJavascriptがjQueryらしくなかったので書き直す。jQuery.ajax()を使えば非同期HTTPリクエストを行えたんね。ajax使うように書き直すと、こんな感じ。
function a() {
    var appid = '<ヤフーアプリケーションID>';
    var query = $("#query").val();
    $.ajax({
        dataType: "jsonp",
        data: {
            "appid": appid,
            "query": query
        },
        url: "http://auctions.yahooapis.jp/AuctionWebService/V2/json/search",
        success: function (data) {
            $("#result_list li:gt(0)").remove();
            if (data.ResultSet["@attributes"].totalResultsReturned > 0) {
                $.each(data.ResultSet.Result.Item, function(i,item){
                    var row = $("#result_template").clone();
                    row.removeAttr("style");
                    row.appendTo("#result_list");
                    row.find("#image").attr("src", item.Image);
                    row.find("#link").attr("href", item.AuctionItemUrl);
                    row.find("#title").text(item.Title);
                    row.find("#price").text(parseInt(item.CurrentPrice) + "円");
                });
            }
        }
    });
}
前回のでは、自分でqueryをencodeURIしてやってたけど、ajaxのdataでは不要。dataにcallbackは不要でsuccessに処理を記述する。jQueryでcallbackパラメータ付けてくれてリクエストしている模様。

2011年6月12日日曜日

DroidgapでWebアプリをAndroidアプリに変換してみる

PhoneGapはHTML+CSS+JavaScriptでAndroidやiPhoneなどのアプリケーションを開発できるフレームワークで、DrodiGapってのはPhoneGapでの開発に必要なファイルを生成してくれるテンプレート生成ツール。

DrodiGapではWebアプリをAndroidアプリに変換もできるようなので、ちょっと試してみる。
参考:5分で作るAndroidアプリケーション

2011年6月7日火曜日

Android WebViewメモ

WebViewについてのメモ。

・戻るボタン押されたときに、前のページに戻す

ActivityのonKeyDownのオーバライドする
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (event.getAction() == KeyEvent.ACTION_DOWN
                && keyCode == KeyEvent.KEYCODE_BACK
                && webview.canGoBack() == true) {
            webview.goBack();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }

・ロードするURLに応じて処理をさせる

WebViewClientを継承してonLoadResourceに処理実装する。それをWebViewにセット。
        webview.setWebViewClient(new MyWebViewClient());
・・・
    public class MyWebViewClient extends WebViewClient {
        @Override
        public void onLoadResource(WebView view, String url) {
            if(!url.startsWith("http://example.com")) {
                Toast.makeText(getApplicationContext(), "外部サイトす。" , Toast.LENGTH_SHORT).show();
            }
        }
    }
example.com以外のサイトでは外部サイトとToast表示させる。例としては微妙だけど。。

WebViewClientで他にもいろいろできそう。onPageStartedとかonPageFinishedなどある。
上の例はonLoadResourceじゃなくてonPageStartedのがいいのかな。呼ばれる順番は下記のとおり。
05:37:39.808: DEBUG/MyWebViewClient(977): onPageStarted
05:37:39.888: DEBUG/MyWebViewClient(977): onLoadResource
05:37:40.938: DEBUG/MyWebViewClient(977): onPageFinished

以上、とりあえずメモ。

※追記
リダイレクト時(a.php→a.html)の挙動。
06:24:27.138: DEBUG/MyWebViewClient(1108): onPageStarted a.php
06:24:27.184: DEBUG/MyWebViewClient(1108): onLoadResource a.php
06:24:27.257: DEBUG/MyWebViewClient(1108): onPageStarted a.html
06:24:27.397: DEBUG/MyWebViewClient(1108): onPageFinished a.html
リダイレクト元URLのonPageFinishedは呼ばれず、リダイレクト先URLではonLoadResourceは呼ばれない。

2011年6月3日金曜日

Ubuntu ネットにつながらなくなるし

突然だった。昨日までは普通にネット見れてたのに。
突然なんてことはなく、何かやらかしたんだろうけれど、思い当たる節がない。
とりあえず調べてみよう。

どうも、resolv.confがおかしくなったよう。

DNSサーバの設定が保存されないを参考に。

resolv.confを修正して、/etc/dhcp3/dhclient.confのrequestセクションからdomain-name-serversを抜いてみる。
再起動時に戻ってしまったので、/etc/dhcp3/dhclient.confは元に戻す。きっと何かを間違えてるのだろう。

/etc/network/interfacesに固定IPにするように設定を追記。
auto eth0
iface eth0 inet static
address 固定IP
netmask 255.255.255.0
gateway ゲートウェイ(ルータ)IP

これでつながり、再起動後も問題無し。
でも、昨日アップデートとかも何もしてないし、どうしてこうなった?

2011年6月2日木曜日

Android 進捗表示の方法あれこれ

今までタスクの進捗を表示するときProgressDialogで"くるくるまわってる"やつを一択で使ってたけど、他にもタイトルバー上に表示したり、進捗率を表示させたりと色々あるようなので簡単にメモ。