ラベル Android の投稿を表示しています。 すべての投稿を表示
ラベル Android の投稿を表示しています。 すべての投稿を表示

2015/11/10

Chord MojoをXperia Z Ultraで使ってみる

Chord MojoをXperia Z Ultraで使えるようにしました。
プレイヤーはOnkyo HF Playerです。

一応音はなるようになったのですが、44.1kHzのファイルを再生していると結構な頻度で「ボソ」とノイズが乗る気がします。
多分気のせいではないとは思うのですが…。

96kHzではノイズは発生しないようです。

Windowsのfoobar2000で使っていた際はなかったノイズですが、原因がどこにあるのか今のところ分かっていません。

一晩たったら44.1kHzのファイルを再生している際のノイズが発生しなくなりました。
接続方法などは特に変えていません。
何が悪かったのだろう?


OTGケーブルはiBUFFALO USB(microB to A)変換アダプター を購入しました。


HF Playerに必要な設定は以下の画像のようにしました。

方針として、HF PlayerではアップサンプリングやPCMのリアルタイムDSD変換は行わないようにしています。



HF Playerは1,000円のアンロックアプリを購入することでOnkyo USB HF Driverのハイレゾ出力やアップサンプリング、DSDリアルタイム変換の機能が有効になるようです。

私は前述のとおりアップサンプリングやリアルタイム変換は使用しない方針ですが、ハイレゾが聴けないのは困るのでアンロックアプリを購入しました。


Xperia Z UltraのSDカード容量がいっぱいになってしまっている関係でDSDファイルの再生は試していないのですが、DSDリアルタイム変換を行うとサンプリングレートLEDが白に、96kHzのPCMファイルでは緑に、44.1kHzのファイルでは赤に光ることが確認できました。

2015年12月23日追記
ONKYO HF Playerだと頻繁に音飛びしていましたが、USB Audio Player Proにしてオプション「USB tweak 2」をオンにしたら音飛びがほぼ無くなった気がします。
2015年12月23日追記終了

2014/05/12

Nexus7(2012)でDebian

Nexus7(2012)を手にいれたのでその上にDebian環境を構築しました。
以下のサイトの手順をほぼそのまま実行しました。
唯一の違いはddコマンドで作成する場所を /mnt/external_sd/以下ではなく/sdcard/以下にしただけです。

以下の画像ではDebian上でvncserverを起動し、AndroidのVNCクライアントからアクセスしています。
1台のNexus7でVNCサーバーとクライアントを同時に動かしていることになります。

2010/11/13

IS01入手

ヤフオクでIS01を入手しました。
やっぱりキーボード付きの機種はいいですね。

最近はADP1をあまりいじってなかったのでAndroidのアプリ事情はよく知らなかったのですが、結構充実してきましたね。

twitterクライアントは無料でいいのが色々あるし、Opera Mini、Opera Mobileもあります。
はてな関連もいくつか。

搭載されているAndroidのバージョンが1.6なのは残念です。
FirefoxのAndroid版は試せないし。

バージョンアップとかしてくれるのかな? >> シャープさん

望み薄かな?


で、Blogger-droidというアプリでためしに投稿。
Published with Blogger-droid v1.6.5

2009/05/27

Android: Antでビルド時に文字コードがらみの警告?

@ITのチュートリアルをやっています。
AndroidでSQLiteのDB操作をするための基礎知識 (1/3) - @IT [www.atmarkit.co.jp]

SQLiteを使用する回のサンプルプログラムをダウンロードして以下の手順でプロジェクトをアップデートした後、CUI環境でコンパイルしようとしました。

ビルド環境:
  • WindowsXP にインストールしている Portable Ubuntu for Windows


・プロジェクトをアップデート
$ android update project \ 
> --name "DB Demo" \
> --target 2 \
> --path $PWD


ant debugでビルドしてみると、文字コードがらみらしい警告が多量に発生し、ビルドもとおりません。
以下のログは文字化けしている箇所は"文字化けした文字列"と置き換えています。

・プロジェクトのビルド
$ ant debug
Buildfile: build.xml
[setup] Project Target: Android 1.5
[setup] API level: 3

dirs:
[echo] Creating output directories if needed...

(省略)

[javac] /mnt/D/xxx/workspace/DB_Demo3/src/com/example/android
/db/Main.java:87: 警告:この文字は、エンコーディング ascii にマップできません。
[javac] {"文字化けした文字列"},
[javac] ^
[javac] /mnt/D/xxx/workspace/DB_Demo3/src/com/example/android
/db/Main.java:87: 警告:この文字は、エンコーディング ascii にマップできません。
[javac] {"文字化けした文字列"},

(省略)

[javac] /mnt/D/xxx/workspace/DB_Demo3/src/com/example/android
/db/Main.java:232: エスケープ文字が不正です。
[javac] {"文字化けした文字列"},
[javac] ^
[javac] エラー 1 個
[javac] 警告 100 個

BUILD FAILED
/home/pubuntu/bin/android-sdk/platforms/android-1.5/templates
/android_rules.xml:116: Compile failed; see the compiler error output for details.

Total time: 12 seconds


どうやら日本語の文字列が含まれたファイルで警告が出ているようです。
警告が出ているファイルを調べると、Shift JISでした。

試しにUTF-8に変換してみたところ、警告が大量に出るのは変わらなかったのですが、ビルドは成功しました。
しかし、Android Dev Phone 1(ADP1)にインストールして起動してみたところ、起動時にエラーとなりこのサンプルアプリケーションを使用することはできませんでした。

ネットで調べてみたのですが、通常のJavaであればAntでnative2asciiを使うとか色々引っかかりましたが、なかなかAndroidの情報が見つかりません。
同様にnative2asciiを使用してみようかと思ったのですが、挫折しました。


やっとAndroid の build.xml のサンプルが見つかりましたので、これを参考にbuild.xmlをいじってみました。

はっきり言って意味は分かっていません。
エラー -> 修正 を繰り返して以下のコードにおちつきました。
もうちょっと調べてみたいと思います。

・build.xml
<?xml version="1.0" encoding="UTF-8"?>
<project name="DB Demo" default="help">

(省略)

<target name="compile" depends="dirs, resource-src, aidl">
<javac encoding="SJIS" target="1.5" debug="true" extdirs=""
srcdir="."
destdir="bin/classes"
bootclasspath="${sdk-location}/platforms/android-1.5/android.jar">
<classpath>
<fileset dir="libs" includes="*.jar"/>
</classpath>
</javac>
</target>
</project>

build.xmlの末尾の</project>の前に<target>〜</target>を追加しています。


build.xmlを修正後、再度ビルドします。
$ ant debug
Buildfile: build.xml
[setup] Project Target: Android 1.5
[setup] API level: 3

(省略)

[apkbuilder] Creating DB Demo-debug.apk and signing it with a debug key...
[apkbuilder] Using keystore: /home/pubuntu/.android/debug.keystore

BUILD SUCCESSFUL
Total time: 17 seconds

無事ビルドがとおったようです。

ADP1 にインストールしてちょっと確認したところ、動作もしました。

2009/05/23

Android 1.5(cupcake)にセキュリティホール

Android 1.5(cupcake)にセキュリティホールが見つかったそうです。
Android 1.5にセキュリティホール [groups.google.co.jp]

早速アップデートしました。

oCERT.org - oCERT Advisories [www.ocert.org]を見ると1.5 CRB43とやら以上でFixされたみたいです。
Affected version:
Android >= 1.5 CRB17 <= 1.5 CRB42
Fixed version:
Android >= 1.5 CRB43

アップデート後に「Settings」ー「Abount phone」の「Build number」には"CRB43"との記述があるので、多分アップデート成功したのでしょう。

2009/05/22

AndroidでPDFが読みたいのだけど…

AndroidでPDFファイル読む時って、皆さんどうしているのでしょう?

Android Dev Phone 1(以下ADP1と記述)でAndroid Marketを探したりネットで検索してみるとPDFを読むためのアプリ(Viewer, Reader)がいくつか見つかるのですが、私の環境では読みたいPDFファイルを読むことができません。

仕方ないので、GIMPでPDFファイルをインポートしてContinus SaveというScript-fuを使用して複数のPNGファイルに変換し、Picturesという画像ビューアで読んでいました。

ところが、やはり画像ビューアでは文章を読むのに適しているとは言えません。
読む前に必ず画像の拡大をしなければならなかったり、画像を拡大しようとしたのにタッチした場所が悪くて次のファイルに移ってしまったり…。


そこでAndroid Marketに登録されているDroid Comic Viewer(以下ACVと記述)というアプリケーションを使ってみることにしました。
Droid Comic Viewer | Robot Comics [www.robotcomics.net]

ACVは複数の画像ファイルを集めた書庫ファイルを開いて読むことができます。
書庫形式はCBZ, ZIP及びACV、画像形式はJPEG, PNG, BMP 及び GIFに対応しているようです。

私はPDFをPNGに変換し、ZIPでまとめることにしました。


GIMPでContinus Saveを使用して複数のPNGファイルにエクスポートしたものをZIPにまとめればとりあえずは読めるのですが、面倒です。

PDF -> 複数の画像ファイル -> ZIP
と変換することができるUNIX用のアプリケーションを検索してみたのですが見つかりません。

無いものは作ろうということで、Ubuntu 9.04 で動作するシェルスクリプトを勉強がてら作ってみました。
内容は全く保証できませんが、とりあえず目的は果せたようです。

自分の作ったシェルスクリプトでは次を内部で実行しています。
  • pdftoppm (XPDFに含まれるらしい)
    PDFファイルをPPMファイルに変換する

  • convert (ImageMagickに含まれる)
    PPMファイルをPNGファイルに変換する

  • zip
    ZIPファイルにまとめる


シェルスクリプト内で気になっている点は次のとおりです。
「こんなことする必要はない」とか「ここはこうすればもっと良くなる」とか色々あるんでしょうが、よく分かりません。
  • 第一引数はPDFファイル、オプションとして第二引数で作成されるPNGファイルの横幅を指定する
    変換前のPDFファイルがあまりに大きいサイズだとACVで読む時に字がつぶれてしまいます
    800くらいが良いみたい

  • mktempコマンドで一時ディレクトリを作成して作業する

  • 第一引数がPDFファイルかどうかは次の構文で拡張子から判定している
    case $ARG1 in
    *.[Pp][Dd][Ff])

    ;;
    *)

    ;;
    esac

    合っているかな?

  • 第二引数が数字かどうかは次の構文で判定している
    if echo "$2" | grep -E '^[0-9]+$' >/dev/null 2>&1; then


解決できていない問題は次のとおりです。
  • pdftoppm実行時に次のようなエラーが出るPDFファイルがある
    Error: Illegal entry in bfchar block in ToUnicode CMap
    スクウェア・エニックスのアニュアルレポートで発生しましたが、特に問題なくACVで読むことはできるみたいです

  • pdftoppm、convertやzipの実行結果が失敗していることは考慮していない

  • 英語はテキトー


以下はコードです。
段々と直していきます。
#!/bin/sh
MKTEMP=$(which mktemp)
PDFTOPPM=$(which pdftoppm)
CONVERT=$(which convert)
ZIP=$(which zip)

EXECDIR=$PWD
WIDTH_VALUE=''

# check argument
echo '*** checking argument... ***'
if [ $1 ] ; then
ARG1=$1
if [ -f $ARG1 ] ; then
# $ARG1 is a file
case $ARG1 in
*.[Pp][Dd][Ff])
# $ARG1 is a PDF file
echo 'SUCCESS: '$ARG1' is a PDF file'
ZIPFILE=$EXECDIR'/'${ARG1%.[Pp][Dd][Ff]}.zip
BASENAME=${ARG1%%.*}
if [ -f $ZIPFILE ] ; then
echo 'ERROR: '$ZIPFILE' is already exist'
exit
else
if [ $2 ] ; then
if echo "$2" | grep -E '^[0-9]+$' >/dev/null 2>&1; then
WIDTH_VALUE=' -resize '$2' '
else
echo 'ERROR: '$2' is not a number'
exit
fi
fi
fi
;;
*)
echo 'ERROR: '$ARG1' is not a PDF file'
exit
;;
esac
else
# $1 is not a file
echo 'ERROR: '$ARG1' is not a file'
exit
fi
else
# $1 is not
echo 'usage: '$0' PDF-file [Image-width]'
exit
fi

echo
echo '*** checking program... ***'

if [ -x $PDFTOPPM ] ; then
echo 'SUCCESS: find '$PDFTOPPM
else
# cannot find pdftoppm
echo 'ERROR: cannot find pdftoppm'
exit
fi

if [ -x ${CONVERT} ] ; then
echo 'SUCCESS: find '$CONVERT
else
# cannot find convert
echo 'ERROR: cannot find convert'
exit
fi

if [ -x ${ZIP} ] ; then
echo 'SUCCESS: find '$ZIP
else
echo 'cannot find zip'
exit
fi

if [ -x ${MKTEMP} ] ; then
echo 'SUCCESS: find '$MKTEMP
else
echo 'ERROR: cannot find mktemp'
exit
fi

# create temporary directory
echo
echo '*** create temporary directory... ***'
TMPDIR1=$(mktemp -d)
if [ -d $TMPDIR1 ] ; then
echo 'SUCCESS: mktemp -> '$TMPDIR1

TMPDIR2=$(mktemp -d)
if [ -d $TMPDIR2 ] ; then
echo 'SUCCESS: mktemp -> '$TMPDIR2
else
echo 'ERROR: mktemp distination directory error'
fi
else
echo 'ERROR: mktemp error'
fi

echo
echo '*** converting pdf to ppm... ***'
$PDFTOPPM $ARG1 $TMPDIR1'/'$BASENAME

# cd temporary directory
cd $TMPDIR1

echo
echo '*** converting ppm to png... ***'
for i in *.ppm ; do
echo $i' to '$TMPDIR2'/'${i%.ppm}'.png'
$CONVERT $WIDTH_VALUE $i $TMPDIR2'/'${i%.ppm}.png
done

# archive
echo
echo '*** archiving... ***'
cd $TMPDIR2
$ZIP $ZIPFILE *

echo
echo '*** cleaning '$TMPDIR1'... *** '
rm -rf $TMPDIR1
echo '*** cleaning '$TMPDIR2'... *** '
rm -rf $TMPDIR2

exit


ADP1でPDFファイルを読みたいだけなんだけどなぁ…。
何でこんなことやってるのだろう?

2009/05/21

Android アプリをCUIで開発してみる(Hello, MapView のつづき)

Android アプリをCUIで開発してみる(Hello, MapView) [hanagurotanuki.blogspot.com]のつづきです。

低レベルなことやってます。

チュートリアルのHello, MapView で引き続き試してみました。
Hello, MapView | Android Developers [developer.android.com]

Androidアプリの勉強というより、Javaの初歩の初歩つまずいてるって感じです。

引き続き以下の環境で試してみます。
  • SDKはAndroid 1.5 SDK, Release 1のLinux版

  • GNOME Terminal + VIM + Ant


参照したMap APIのリファレンスです。
com.google.android.maps [code.google.com]
これがなかなか見つけられなくて非常に苦労しました。
インストールしたSDKにも含まれています。


Android アプリをCUIで開発してみる(Hello, MapView) [hanagurotanuki.blogspot.com]で行なったことにつづけて、チュートリアルにある以下の追加を行ないます。
So, we now have full interaction controls. All well and good, but what we really want our map for is custom markers and layovers. Let's add some Overlay objects to our map. To do this, we're going to implement the ItemizedOverlay class, which can manage a whole set of Overlay items for us.


Javaアプリなんて作ったことない私は、クラスの追加ってとこでちょっと考え込みました。
当然ファイルを分けたいのですが、Javaでどうやってファイル分けするんだろう…とか。

C++だったらヘッダファイルをincludeだよなーとか考えたり。

そこで、以前買ったのに全然読まずにダンボール箱にしまっておいたJavaのプログラミング本を出してきました。


2001年6月1日第1版第6刷発行


…随分昔に買ったんだなぁ。


Javaのバージョンも上がっているけど、まあ参考になるだろうとちょろちょろ読みながら行いました。

なんとかビルドが通ってAndroid Dev Phone 1(ADP1)で動作させることができました。

以下は自分がVIMでMap APIのリファレンス読みながらカリカリ書いたソースです。
これの動作を確認した後、試しにEclipseでチュートリアル通りに進めて作成したソースを見たら大体同じになっていたので、ちょっと安心しました。

・HelloMapView.java (VIMで記述)
package  com.example.hellomapview;

import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.widget.LinearLayout;
import android.widget.ZoomControls;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;
import com.google.android.maps.OverlayItem;

import java.util.List;

public class HelloMapView extends MapActivity
{
LinearLayout linearLayout;
MapView mapView;
ZoomControls mZoom;
List mapOverlays;
Drawable drawable;
HelloItemizedOverlay itemizedOverlay;


/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

linearLayout = (LinearLayout) findViewById(R.id.zoomview);
mapView = (MapView) findViewById(R.id.mapview);
mZoom = (ZoomControls) mapView.getZoomControls();

linearLayout.addView(mZoom);

mapOverlays = mapView.getOverlays();
drawable =
this.getResources().getDrawable(R.drawable.androidmarker);
itemizedOverlay =
new HelloItemizedOverlay(drawable);

GeoPoint point =
new GeoPoint(19240000, -99120000);
OverlayItem overlayitem =
new OverlayItem(point, "", "");

GeoPoint point2 =
new GeoPoint(35410000, 139460000);
OverlayItem overlayitem2 =
new OverlayItem(point2, "", "");


itemizedOverlay.addOverlay(overlayitem);
itemizedOverlay.addOverlay(overlayitem2);
mapOverlays.add(itemizedOverlay);
}

@Override
protected boolean isRouteDisplayed() {
return false;
}
}


・HelloItemizedOverlay.java (VIMで記述)
package  com.example.hellomapview;

import com.google.android.maps.ItemizedOverlay;
import com.google.android.maps.OverlayItem;

import java.util.ArrayList;

public class HelloItemizedOverlay extends ItemizedOverlay
{
private ArrayList mOverlays =
new ArrayList();

HelloItemizedOverlay(android.graphics.drawable.Drawable defaultMarker)
{
super(boundCenterBottom(defaultMarker));
}

public void addOverlay(OverlayItem overlay) {
mOverlays.add(overlay);
populate();
}

@Override
protected OverlayItem createItem(int i) {
return mOverlays.get(i);
}

@Override
public int size()
{
return mOverlays.size();
}
}


size()については、チュートリアルに
We're also required to override the size() method. Replace the existing contents of the method with a size request to our ArrayList:
     return mOverlays.size();

としか書いていなくてどんな宣言にすればちょっと考えたのですが、Map APIのリファレンスのItemizedOverlayクラスのトコを見たら、
abstract  int  size()
The number of items in this overlay.

とあったので、コレに合わせました。

また、試しにEclipseでチュートリアル通りに進めてできたHelloItemizedOverlay.java見ると、
import android.graphics.drawable.Drawable;

とインポートしているのに対して、私がVIMで作成した際はMap APIリファレンスのItemizedOverlayの項目にあるコンストラクタの宣言をコピーしたため、
HelloItemizedOverlay(android.graphics.drawable.Drawable defaultMarker)
{
super(boundCenterBottom(defaultMarker));
}

としてしまいました。

いいのかな?

2009/05/19

Android アプリをCUIで開発してみる(Hello, MapView)

Portable Ubuntu for Windows(以下Portable Ubuntuと記述)を使ってCUIでのAndroid アプリ開発のお勉強です。

こちらはチュートリアルのHello, MapView で試した際のメモです。
Hello, MapView | Android Developers [developer.android.com]

相変わらずよく分からずにやっていますので、マネしないでください。


使用しているSDKはAndroid 1.5 SDK, Release 1のLinux版です。
また、GNOME Terminal + VIM + Ant を使用しました。

基本的にチュートリアル通りなのですが、気になった箇所をメモしておきます。


○ Map API の取得
チュートリアルに使うだけなので、デバッグ用のキーを取得しました。
Obtaining a Maps API Key - Google Projects for Android [code.google.com]

まずデバッグ用のkeystoreからMD5 fingerprintを取得します。
Portable Ubuntu なのでkeytstoreは
~/.android/debug.keystore
にあります。

その他の環境は以下の場所にそれぞれあるようです。
  • Windows Vista: C:\Users\<user>\.android\debug.keystore

  • Windows XP: C:\Documents and Settings\<user>\.android\debug.keystore

  • OS X and Linux: ~/.android/debug.keystore


それではPortable Ubuntu で MD5 fingerprintを取得します。
$ keytool -list -alias androiddebugkey \
> -keystore ~/.android/debug.keystore \
> -storepass android -keypass android
androiddebugkey, 2009/05/16, PrivateKeyEntry,
証明書のフィンガープリント (MD5): MD5 fingerprint


取得したMD5 fingerprintを次のURLの入力フォームに入力してMap API Keyを取得します。
Sign Up for the Android Maps API [code.google.com]
スペースが入ったりするとダメみたいです。


○ プロジェクトの作成 ~ ソースの編集
プロジェクトの雛形を作成します
後で記述しますが、--target で指定する target id は 3 じゃないとダメみたいです。
$ android create project \
--target 3 \
--package com.example.hellomapview \
--activity HelloMapView \
--path HelloMapView


ソースの編集はチュートリアル通りなのですが、HelloMapView.java で次の4つをインポートしました。
import android.widget.LinearLayout;
import android.widget.ZoomControls;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapView;

EclipseだとCtrl + Shift + O で自動でインポートしてくれるんでしたよね。


○ プロジェクトのビルド
チュートリアルから以下のサイトリンクされています。
Google APIs Add-On - Google Projects for Android [code.google.com]

ここに次のような記述がありました。
The Google APIs add-on includes:
  • The Maps external library for Android 1.5 (API Level 3)


android create projectやandroid update projectのオプション--targetで指定するtarget idの意味をandroid list targetsで調べると次のようにあります。
$ android list targets
Available Android targets:
id: 1
Name: Android 1.1
Type: Platform
API level: 2
Skins: HVGA (default), HVGA-L, QVGA-L, QVGA-P, HVGA-P
id: 2
Name: Android 1.5
Type: Platform
API level: 3
Skins: HVGA (default), HVGA-L, QVGA-L, QVGA-P, HVGA-P
id: 3
Name: Google APIs
Type: Add-On
Vendor: Google Inc.
Description: Android + Google APIs
Based on Android 1.5 (API level 3)
Libraries:


ちょっと試しに target id の指定を変えて android update project コマンドでプロジェクトをアップデートしてビルドしてみました。

結論としては、target id は 3じゃないとダメみたいです。

試しにtarget id に 2 を指定してビルドしてみます。
$ rm -rf bin
$ android update project --target 2 --name HelloMapView --path $PWD
Updated default.properties
Updated local.properties
Updated file /home/pubuntu/D/xxx/workspace/HelloMapView/build.xml
$ ant debug
Buildfile: build.xml
[setup] Project Target: Android 1.5
[setup] API level: 3

dirs:
[echo] Creating output directories if needed...
[mkdir] Created dir: /mnt/D/xxx/workspace/HelloMapView/bin
[mkdir] Created dir: /mnt/D/xxx/workspace/HelloMapView/bin/classes

resource-src:
[echo] Generating R.java / Manifest.java from the resources...

aidl:
[echo] Compiling aidl files into Java classes...

compile:
[javac] Compiling 2 source files to /mnt/D/xxx/workspace/HelloMapView/bin/classes
[javac] /mnt/D/xxx/workspace/HelloMapView/src/com/example/hellomapview/HelloMapView.java:7: パッケージ com.google.android.maps は存在しません。
[javac] import com.google.android.maps.MapActivity;
[javac] ^
[javac] /mnt/D/xxx/workspace/HelloMapView/src/com/example/hellomapview/HelloMapView.java:8: パッケージ com.google.android.maps は存在しません。
[javac] import com.google.android.maps.MapView;
[javac] ^
[javac] /mnt/D/xxx/workspace/HelloMapView/src/com/example/hellomapview/HelloMapView.java:10: シンボルを見つけられません。
[javac] シンボル: クラス MapActivity
[javac] public class HelloMapView extends MapActivity
[javac] ^
[javac] /mnt/D/xxx/workspace/HelloMapView/src/com/example/hellomapview/HelloMapView.java:13: シンボルを見つけられません。
[javac] シンボル: クラス MapView
[javac] 場所 : com.example.hellomapview.HelloMapView の クラス
[javac] MapView mapView;
[javac] ^
[javac] /mnt/D/xxx/workspace/HelloMapView/src/com/example/hellomapview/HelloMapView.java:20: シンボルを見つけられません。
[javac] シンボル: 変数 super
[javac] 場所 : com.example.hellomapview.HelloMapView の クラス
[javac] super.onCreate(savedInstanceState);
[javac] ^
[javac] /mnt/D/xxx/workspace/HelloMapView/src/com/example/hellomapview/HelloMapView.java:21: シンボルを見つけられません。
[javac] シンボル: メソッド setContentView(int)
[javac] 場所 : com.example.hellomapview.HelloMapView の クラス
[javac] setContentView(R.layout.main);
[javac] ^
[javac] /mnt/D/xxx/workspace/HelloMapView/src/com/example/hellomapview/HelloMapView.java:23: シンボルを見つけられません。
[javac] シンボル: メソッド findViewById(int)
[javac] 場所 : com.example.hellomapview.HelloMapView の クラス
[javac] linearLayout = (LinearLayout) findViewById(R.id.zoomview);
[javac] ^
[javac] /mnt/D/xxx/workspace/HelloMapView/src/com/example/hellomapview/HelloMapView.java:24: シンボルを見つけられません。
[javac] シンボル: クラス MapView
[javac] 場所 : com.example.hellomapview.HelloMapView の クラス
[javac] mapView = (MapView) findViewById(R.id.mapview);
[javac] ^
[javac] /mnt/D/xxx/workspace/HelloMapView/src/com/example/hellomapview/HelloMapView.java:24: シンボルを見つけられません。
[javac] シンボル: メソッド findViewById(int)
[javac] 場所 : com.example.hellomapview.HelloMapView の クラス
[javac] mapView = (MapView) findViewById(R.id.mapview);
[javac] ^
[javac] /mnt/D/xxx/workspace/HelloMapView/src/com/example/hellomapview/HelloMapView.java:17: メソッドはスーパータイプのメソッドをオーバーライドまたは実装しません
[javac] @Override
[javac] ^
[javac] /mnt/D/xxx/workspace/HelloMapView/src/com/example/hellomapview/HelloMapView.java:30: メソッドはスーパータイプのメソッドをオーバーライドまたは実装しません
[javac] @Override
[javac] ^
[javac] エラー 11 個

BUILD FAILED
/home/pubuntu/bin/android-sdk/platforms/android-1.5/templates/android_rules.xml:116: Compile failed; see the compiler error output for details.

Total time: 6 seconds

ビルドできませんでした。


今度は target id に 3 を指定してみます。
$ rm -rf bin
$ android update project --target 3 --name HelloMapView --path $PWD
Updated default.properties
Updated local.properties
Updated file /home/pubuntu/D/xxx/workspace/HelloMapView/build.xml
pubuntu@pubuntu:~/D/xxx/workspace/HelloMapView$ ant debug
Buildfile: build.xml
[setup] Project Target: Google APIs
[setup] Vendor: Google Inc.
[setup] Platform Version: 1.5
[setup] API level: 3

dirs:
[echo] Creating output directories if needed...
[mkdir] Created dir: /mnt/D/xxx/workspace/HelloMapView/bin
[mkdir] Created dir: /mnt/D/xxx/workspace/HelloMapView/bin/classes

resource-src:
[echo] Generating R.java / Manifest.java from the resources...

aidl:
[echo] Compiling aidl files into Java classes...

compile:
[javac] Compiling 2 source files to /mnt/D/xxx/workspace/HelloMapView/bin/classes
[javac] 注:/mnt/D/xxx/workspace/HelloMapView/src/com/example/hellomapview/HelloMapView.java は推奨されない API を使用またはオーバーライドしています。
[javac] 注:詳細については、-Xlint:deprecation オプションを指定して再コンパイル してください。

dex:
[echo] Converting compiled files and external libraries into bin/classes.dex...

package-resources:
[echo] Packaging resources
[aaptexec] Creating full resource package...

debug:
[apkbuilder] Creating HelloMapView-debug.apk and signing it with a debug key...
[apkbuilder] Using keystore: /home/pubuntu/.android/debug.keystore

BUILD SUCCESSFUL
Total time: 11 seconds

警告らしきものは出ますが、ビルドはできました。

2009/05/16

Android アプリをCUIで開発してみる

以下は単に個人的な備忘録です。

私が試行錯誤して軌跡をメモした程度の内容であり、ものすごくテキトーです。
間違いだらけかも。

JAVA は(も?)よく分からないです。


工人舎のミニノート(SC3KX06AS)のあまりパワーのない環境でも快適に Android アプリの開発をしようと思いたち、CUI の開発環境を整えることにしました。

ちなみに、次のスクリーンショットのような感じで開発したいです。
Portable Ubuntu for Windows(以下Portable Ubuntuと表記)で GNOME Terminal、GNU ScreenとVI(VIM)を使っています。


基本的にはDeveloping In Other IDEs | Android Developers [developer.android.com]を参照したつもりなのですが、よく分からないことだらけです。

工人舎のミニノート(SC3KX06AS)のWindows XP にインストールしている Portable Ubuntu をメインにしたいと考えていますが、私の環境の Portable Ubuntu では現時点で次のような問題があります。
  • USBに接続しているAndroid Dev Phone 1(以下ADP1と記載)を使用できない
    そのため、adb install などは使えない

そのため、Windows のコマンドプロンプトでもビルドできる環境を整えたいと思います。

次のことはなんとかできました。
  • Portable Ubuntu のシェルで Android プロジェクトをビルド

  • Windows XP のコマンドプロンプトで Android プロジェクトをビルド

  • Windows XP のコマンドプロンプトで adb install によって ADP1にアプリをインストール

今のところ次の点がよく分かりません。
  • Windows と Linux(Portable Ubuntu)間でプロジェクトを移動する場合、プロジェクトのアップデートが必要?
    下記の「4.」と「5.」

  • プロジェクトのアップデート後に build.xmlの project nameの修正は必要?
    下記「5.」


1. Portable Ubuntu から Windows の D:\ ディスクを読めるようにする


まずはWindowsシステム内の設定です。
C:\xxx\Portable_Ubuntu\config\portable_ubuntu.conf の元からあった cofs1=c:\ の下に、次のように cofs2 で始まる行を追加しました。

cofs1=c:\ #Para tener acceso a la unidad C:
cofs2=d:\


次は Portable Ubuntu システム内の設定です。
Portable Ubuntu にログイン後、/etc/fstab のcofs1で始まる行の下に cofs2 で始まる行を追加しました。
cofs1          /mnt/C           cofs    user,dmask=0777,fmask=0666 0       0
cofs2 /mnt/D cofs user,dmask=0777,fmask=0666 0 0

私の記憶が確かであれば、これで Windows の D:\ ディスクを Portable Ubuntu からは /mnt/D で読めるようになったハズです。


2. Windows に CUI で Android アプリ開発を行なえる環境を作る

Windows 用 Android SDK はインストール済みであるとします。

2-1. JDK のインストール
Windows に JDK をインストールして、環境変数 PATH に以下の値を加え、またJAVA_HOMEを設定する。
・PATH に C:\Program Files\Java\jdk1.6.0_13\bin を追加
・JAVA_HOME に C:\Program Files\Java\jdk1.6.0_13 を設定

2-2. Ant のインストール
Apache Ant - Binary Distributions [ant.apache.org] から apache-ant-1.7.1-bin.zip をダウンロードして D:\xxx\bin 以下に解凍し、できたディレクトリを apache-ant に名前を変更して D:\xxx\bin\apache-ant としました。

また、Windows の環境変数 PATH に以下の値を加えました。
・PATH に D:\xxx\bin\apache-ant\bin を追加

2-3. Windows のコマンドプロンプトから Android プロジェクトを作成する
以下の例では D:\xxx\workspace\HelloTabWidget_windows以下にAndroid プロジェクトが作成されます。
C:\Documents and Settings\xxx>d:
D:\>cd xxx\workspace
D:\xxx\workspace>android create project
--target 2
--activity HelloTabWidget
--package com.example.hellotabwidget
--path HelloTabWidget_windows
(実際は一行)

(省略)


HelloTabWidget_windows がディレクトリができたことを確認します。
D:\xxx\workspace>dir HelloTabWidget_windows
ドライブ D のボリューム ラベルがありません。
ボリューム シリアル番号は 567E-9060 です

D:\xxx\workspace\HelloTabWidget_windows のディレクトリ

2009/05/16 02:51 <DIR> .
2009/05/16 02:51 <DIR> ..
2009/05/16 02:51 636 AndroidManifest.xml
2009/05/16 02:51 <DIR> bin
2009/05/16 02:51 440 build.properties
2009/05/16 02:51 2,734 build.xml
2009/05/16 02:51 364 default.properties
2009/05/16 02:51 <DIR> gen
2009/05/16 02:51 <DIR> libs
2009/05/16 02:51 428 local.properties
2009/05/16 02:51 <DIR> res
2009/05/16 02:51 <DIR> src
2009/05/16 02:51 <DIR> tests
5 個のファイル 4,602 バイト
8 個のディレクトリ 15,334,060,032 バイトの空き領域


2-4. Windows のコマンドプロンプトから Android プロジェクトをビルドする
D:\xxx\workspace>cd HelloTabWidget_windows
D:\xxx\workspace\HelloTabWidget_windows>ant debug

(省略)

BUILD SUCCESSFUL
Total time: 20 seconds

bin\以下に apkファイルができたことを確認します。
D:\xxx\workspace\HelloTabWidget_windows>dir bin
ドライブ D のボリューム ラベルがありません。
ボリューム シリアル番号は 567E-9060 です

D:\xxx\workspace\HelloTabWidget_windows\bin のディレクトリ

2009/05/16 03:09 <DIR> .
2009/05/16 03:09 <DIR> ..
2009/05/16 03:08 <DIR> classes
2009/05/16 03:09 1,740 classes.dex
2009/05/16 03:09 4,409 HelloTabWidget-debug.apk
2009/05/16 03:09 1,924 HelloTabWidget.ap_
3 個のファイル 8,073 バイト
3 個のディレクトリ 15,334,023,168 バイトの空き領域


2-5. Windows での adb devices の実行結果
USB 接続している Android Dev Phone 1 が見えます。
D:\xxx\workspace\HelloTabWidget_windows>adb devices
List of devices attached
HT845GZ59637 device

D:\xxx\workspace\HelloTabWidget_windows>


3. Portable Ubuntu に CUI で Android アプリ開発を行なえる環境を作る

Antはapt-get installでインストールしました。

3-1. Portable Ubuntu に Android SDK をインストールする

Android 1.5 SDK, Release 1 | Android Developers [developer.android.com]から android-sdk-linux_x86-1.5_r1.zip を入手して Portable Ubuntu システム内の $HOME/bin 以下に解凍し、できたフォルダへのリンクを $HOME/bin/android-sdkとして作成しました。

$HOME/bin 以下は次のようになりました。
$ ls -l $HOME/bin|grep android
lrwxrwxrwx 1 pubuntu pubuntu 28 2009-05-15 17:24 android-sdk -> android-sdk-linux_x86-1.5_r1
drwxrwx--- 6 pubuntu pubuntu 4096 2009-04-22 13:14 android-sdk-linux_x86-1.5_r1


3-2. Portable Ubuntu に JDK をインストールする
次にこちらと同様の手順でJDKをインストールします。

$HOME/bin 以下は次のようになりした。
$ ls -l $HOME/bin|grep jdk
lrwxrwxrwx 1 pubuntu pubuntu 11 2009-05-15 18:10 jdk -> jdk1.6.0_13
drwxr-xr-x 10 pubuntu pubuntu 4096 2009-05-15 18:09 jdk1.6.0_13

以下の環境変数を追加し、$HOME/.bashrcにも記述を追加します。
$ export PATH=$HOME/bin/android-sdk/tools:$PATH
$ export JAVA_HOME=$HOME/bin/jdk
$ export PATH=$HOME/bin/jdk/bin:$PATH
$ tail -n2 .bashrc
export PATH=$HOME/bin/android-sdk/tools:$HOME/bin/jdk/bin:$PATH
export JAVA_HOME=$HOME/bin/jdk


3-3. Portable Ubuntu のシェルから Android プロジェクトを作成する
以下の例では /mnt/D/xxx/workspace/HelloTabWidget_pubuntu 以下に Android プロジェクトが作成されます。

このディレクトリはWindows 側から見ると D:\xxx\workspace\HelloTabWidget_pubuntu以下となります。
$ cd /mnt/D/xxx/workspace/
$ android create project \
> --target 2 \
> --activity HelloTabWidget \
> --package com.example.hellotabwidget \
> --path HelloTabWidget_pubuntu

(省略)


HelloTabWidget_pubuntuができたことを確認します。
$ ls HelloTabWidget_pubuntu/
AndroidManifest.xml build.xml libs src
bin default.properties local.properties tests
build.properties gen res


3-4. Portable Ubuntu のシェルから Android プロジェクトをビルドする
$ cd HelloTabWidget_pubuntu/
$ ant debug

(省略)

BUILD SUCCESSFUL
Total time: 10 seconds

bin/以下にapkファイルができたことを確認します。
$ ls -l bin
total 5
-rw-rw-rw- 1 root root 4410 2009-05-16 03:16 HelloTabWidget-debug.apk
-rw-rw-rw- 1 root root 1924 2009-05-16 03:15 HelloTabWidget.ap_
drwxrwxrwx 1 root root 0 2009-05-16 03:15 classes
-rw-rw-rw- 1 root root 1740 2009-05-16 03:15 classes.dex


3-5. Portable Ubuntu での adb devices の実行結果

接続している Android Dev Phone 1 は見えません。
$ adb devices
List of devices attached

$

4. WindowsとPortable Ubuntuでお互いのプロジェクトを交換してそのままビルドする
どちらもエラーになります。

例えばWindows で作成したプロジェクトの場合、local.properties に
sdk-location=C:\\xxx\\bin\\android-sdk
とあるので、このあたりをいじらないとダメなのかな?

Eclipse で作成したプロジェクトだと Windows <-> Linux でいけてるんじゃないかと思っているのですが、後で確認しよう。
それとも自動でandroid update projectと同様の処理が行われるのかな?


4-1. Portable Ubuntu で作成したプロジェクトをWindowsのコマンドプロンプトでビルドする

D:\xxx\workspace\HelloTabWidget_windows>cd ..\HelloTabWidget_pubuntu
D:\xxx\workspace\HelloTabWidget_pubuntu>ant debug
Buildfile: build.xml

(省略)

BUILD FAILED
D:\xxx\workspace\HelloTabWidget_pubuntu\build.xml:49: taskdef class com.android.ant.SetupTask cannot be found

Total time: 0 seconds


4-2. Windows で作成したプロジェクトをPortable Ubuntu のシェルでビルドする
$ cd ../HelloTabWidget_windows
$ ant debug
Buildfile: build.xml

(省略)

BUILD FAILED
/mnt/D/xxx/workspace/HelloTabWidget_windows/build.xml:49: taskdef class com.android.ant.SetupTask cannot be found
Total time: 1 second


5. WindowsとPortable Ubuntuでお互いのプロジェクトを交換した際にはプロジェクトをアップデートしてからビルドする


5-1. Portable Ubuntu で作成したプロジェクトをWindowsのコマンドプロンプトでアップデートしてからビルドする
D:\xxx\workspace\HelloTabWidget_pubuntu>move build.xml build.xml.bak
D:\xxx\workspace\HelloTabWidget_pubuntu>android update project --target 2 --path %CD%
Updated default.properties
Updated local.properties
Added file D:\xxx\workspace\HelloTabWidget_pubuntu\build.xml

ここで build.xml の以下の箇所を修正する。
<project name=".HelloTabWidget" default="help">
-> <project name="HelloTabWidget" default="help">

これをしないと、bin/.HelloTabWidget-debug.apk になってしまいます。
--path の指定が悪いのでしょうか?
それとも仕様?

D:\xxx\workspace\HelloTabWidget_pubuntu>del bin
D:\xxx\workspace\HelloTabWidget_pubuntu\bin\*、よろしいですか (Y/N)? y

D:\xxx\workspace\HelloTabWidget_pubuntu>ant debug
Buildfile: build.xml
[setup] Project Target: Android 1.5
[setup] API level: 3

(省略)

BUILD SUCCESSFUL
Total time: 6 seconds
D:\xxx\workspace\HelloTabWidget_pubuntu>dir bin
ドライブ D のボリューム ラベルがありません。
ボリューム シリアル番号は 567E-9060 です
D:\xxx\workspace\HelloTabWidget_pubuntu\bin のディレクトリ
2009/05/16 04:23 <DIR> .
2009/05/16 04:23 <DIR> ..
2009/05/16 03:15 <DIR> classes
2009/05/16 04:23 1,740 classes.dex
2009/05/16 04:23 4,409 HelloTabWidget-debug.apk
2009/05/16 04:23 1,924 HelloTabWidget.ap_
3 個のファイル 8,073 バイト
3 個のディレクトリ 15,333,715,968 バイトの空き領域


5-2. Windowsので作成したプロジェクトをPortable Ubuntu アップデートしてからビルドする
5-1 と同じように進めます。

$ mv build.xml build.xml.bak
$ android update project \
> --target 2 \
> --path $PWD
Updated default.properties
Updated local.properties
Added file /home/pubuntu/D/xxx/workspace/HelloTabWidget_windows/build.xml


ここで build.xml の以下の箇所を修正する。
<project name=".HelloTabWidget" default="help">
-> <project name="HelloTabWidget" default="help">
…これってどうするのが正しいのでしょうか?

$ ant debug
Buildfile: build.xml
[setup] Project Target: Android 1.5
[setup] API level: 3

(省略)

BUILD SUCCESSFUL
Total time: 6 seconds


bin/以下にapkファイルができたことを確認します。

$ ls -lrt bin/
total 5
drwxrwxrwx 1 root root 0 2009-05-16 03:08 classes
-rw-rw-rw- 1 root root 2604 2009-05-16 07:47 classes.dex
-rw-rw-rw- 1 root root 1924 2009-05-16 07:47 HelloTabWidget.ap_
-rw-rw-rw- 1 root root 4636 2009-05-16 07:47 HelloTabWidget-debug.apk


2009/05/15

Android OS 携帯「HTC Magic」発売

ついに日本にも来ましたね。
ドコモ、Android端末を6月にも投入  「HTC Magic」発売へ [www.itmedia.co.jp]

ハードキーボード無しの「HTC Magic」というのが残念です。
一般的にはハードキーボード付きってダサかったりするのでしょうか?


標準の日本語IMEってどれくらい開発進んでいるのでしょうか?
私の持っているAndroid Dev Phone 1(ADP1) には入っていないので分からないのですが。

ADP1でも試してみたいなぁ。


以下は、私がよく使っているアプリを公開してくださっているサイトのメモです。

  • Android SKK
    Android向けにSKKを作ってみた [d.hatena.ne.jp]
    UNIXでおなじみのSKKを使用する日本語IMEです。


  • しめじ
    「simeji」をAndroid SDK1.5のハードキーボードに対応しました [www.adamrocker.com]
    Social IMEを使用した日本語IMEです。


  • Bettik
    Bettik 0.4.1リリース [rainbowdevil.jp]
    2ちゃんねるブラウザです。


  • BeyondPod for Android
    BeyondPod for Android [www.beyondpod.mobi]
    Podcast アプリケーションです。
    フジポッド [www.fujitv.co.jp] の「つか金フライデー」 [fujitv.cocolog-nifty.com]とかを聴いています。

    有料ですが、Android Market で有料アプリを購入できない地域・ハード(ADP1)でもPayPal経由で購入できました。
    ドコモのHTC Magicでは問題なくAndroid Marketから購入できるようになるのでしょうけど。


  • Mobilogger
    mobilogger - Google Code [code.google.com]
    ブログ投稿用のツールです。
    つい先日見つけました。
    bloggerとBiglobeブログに投稿できました。
    後者では投稿時にエラーと表示されますが、投稿はできているようです。


  • NewsRob
    NewsRob [newsrob.blogspot.com]
    Google Reader用のアプリケーションです。
    ダウンロードしておいてオフラインで読むこともできます。



とりあえず以上です。

2009/05/09

Ubuntu 9.04 に Android 開発環境を整えた

うちのノートPCにインストールしているUbuntu 9.04 に Android 開発環境を整えました。

恥ずかしながら、これまで DDMS が使えないなどの問題があったのですが、adb を使用してのAndroid ファームのアップグレードなどはできたので放置しておりました。

ちなみにAndroid アプリの開発(のお勉強)は工人舎のミニノート(SC3KX06AS)で行なっていました。
さすがにEclipse動かすのはキツカッタ…。

例えば Eclipse を使わずにコマンドラインからAndroid Projectjを作成しようとした場合、次のようなエラーが発生しました。
~/work2/test$ android create project \
--target 1 \
--path ./myProject \
--activity MyActivity \
--package com.example.myproject

Exception in thread "main" java.lang.AssertionError
at com.android.sdkmanager.CommandLineProcessor.define(CommandLineProcessor.java:758)
at com.android.sdkmanager.SdkCommandLine.(SdkCommandLine.java:96)
at com.android.sdkmanager.Main.init(Main.java:125)
at com.android.sdkmanager.Main.run(Main.java:80)
at com.android.sdkmanager.Main.main(Main.java:72)

Ubuntuパッケージで提供されているsun-java6-bin, sun-java6-jdk, sun-java6-jre などをインストールして環境変数 JAVA_HOMEなどを設定してみたのですが、解決方法が分かりません。

(2009/07/28追記)
コメントで教えていただいたのですが、sudo update-alternatives –config javaを実行するという方法があるようです。
Ubuntu PCを手放してしまったため、自分ではまだ確認出来ていません…。
(2009/07/28追記終了)


そこで基本に戻ろうということで、Ubuntuパッケージで提供されているsun-java6-bin, sun-java6-jdk, sun-java6-jreはアンインストールし、www.java.comで配布されているJDKをインストールすることにしました。
Java SE ダウンロード - Sun Developer Network (SDN) [java.sun.com]
(2009/5/15 修正)
JDKダウンロードのリンクを修正

まずは jdk-6u13-linux-i586.binをダウンロードしたディレクトリに移動し、jdk-6u13-linux-i586.binを展開します。
$ sh jdk-6u13-linux-i586.bin


私は自分でUbuntuパッケージを作らずにインストールしたアプリはとりあえず$HOME/bin 以下に集めたいので、展開したjdk1.6.0_13のリンクを $HOME/bin/jdk として作成しました。
~$ cd ~/bin/
~/bin$ ln -s jdkを展開したディレクトリ/jdk1.6.0_13 jdk
~/bin$ ls $HOME/bin/jdk
COPYRIGHT bin man
LICENSE db register.html
README.html demo register_ja.html
README_ja.html include register_zh_CN.html
README_zh_CN.html jre sample
THIRDPARTYLICENSEREADME.txt lib src.zip


環境変数を設定します。
~/bin$ export JAVA_HOME=$HOME/bin/jdk
~/bin$ export PATH=$HOME/bin/jdk/bin:$PATH


再度 Android プロジェクトを作成してみます。
~$ cd ~/work2/test
~/work2/test$ android create project \
> --target 1 \
> --path ./myProject \
> --activity MyActivity \
> --package com.example.myproject
Created project directory: ./myProject
Created directory /share/xxx/work2/test/myProject/src/com/example/myproject
Added file ./myProject/src/com/example/myproject/MyActivity.java
Created directory /share/xxx/work2/test/myProject/gen/com/example/myproject
Created directory /share/xxx/work2/test/myProject/res
Created directory /share/xxx/work2/test/myProject/bin
Created directory /share/xxx/work2/test/myProject/libs
Created directory /share/xxx/work2/test/myProject/res/values
Added file ./myProject/res/values/strings.xml
Created directory /share/xxx/work2/test/myProject/res/layout
Added file ./myProject/res/layout/main.xml
Added file ./myProject/AndroidManifest.xml
Added file ./myProject/build.xml
Created directory /share/xxx/work2/test/myProject/tests
Created directory /share/xxx/work2/test/myProject/tests/src/com/example/myproject
Added file /share/xxx/work2/test/./myProject/tests/src/com/example/myproject/MyActivityTest.java
Created directory /share/xxx/work2/test/myProject/tests/gen/com/example/myproject
Created directory /share/xxx/work2/test/myProject/tests/res
Created directory /share/xxx/work2/test/myProject/tests/bin
Created directory /share/xxx/work2/test/myProject/tests/libs
Added file /share/xxx/work2/test/./myProject/tests/AndroidManifest.xml
Added file /share/xxx/work2/test/./myProject/tests/build.xml
~/work2/test$ ls
myProject


今度はAndroid Project が作成されたようです。

DDMS も試してみましたが、問題なく使用してスクリーンショットを撮ることが出きました。

2009/05/08

ドコモからAndroid携帯?

ドコモからAndroid携帯が出るの?
NTT DoCoMo’s first Android phone is HT-03A aka HTC Magic | Android Community

キーボード無しですか。
キーボード付きって評判良くないのかな。

iPhone対抗って考えるとキーボード無い方が興行的に良いのかもしれませんね。

2009/05/06

GDocs+AndroidSKKでブログ投稿

GDocs+AndroidSKKでブログ投稿
AndroidでGDocsを使って下書きしてからブログに投稿してみます。
この記事です。

GDocsはGoogle Documents 用のエディターです。
Home ‎(GDocs for Android)‎ [sites.google.com]


以前はText Editというエディターで下書きしてから投稿していたのですが、なぜなのかは分かりませんがAndroidSKKで記述中に1文字削除しようとすると1行くらい一気に消えてしまう現象が頻発してしまいます。

GDocsでは今のところそのような現象は出ていません。
もちろん、私の使いかたが良かったり悪かったりするだけかもしれません。


GDocsは今のところ、すごくいい感じで使えています。

2009/05/05

BeyondPod For Androidを購入

Android用のポッドキャストマネージャーである BeyondPod For Androidを購入しました。
BeyondPod for Android [www.beyondpod.mobi]

Android Market に期間限定版があるので以前から使用していたのですが、使用期限が切れてしまいました。

私は日本在住で使用している機種もAndroid Dev Phone 1(ADP1) なのでAndroid Marketから有料アプリを購入できません。
(ADP1ってアメリカとかからでも有料アプリって買えないんですっけ?)

BeyondPod For Androidはホームページ [www.beyondpod.mobi]から有料版をPayPal経由で購入できるようです。

試しに購入してみました。
日本円で500円ちょっとでした。

PayPalでの購入手続き終了後すぐに有料版へのリンクが現れます。
どうやらそれはBeyondPod本体とは別にインストールする、キー解除専用のアプリのようです。

残念ながら私の環境ではそのキー解除専用アプリはAndroid標準のブラウザからダウンロードできませんでしたが、そのアプリへのリンクをコピーしてOperaで開いたところ無事ダウンロードできました。

キー解除専用アプリインストール後、BeyondPodも制限無しで使えるようになったみたいです。

BeyondPodの最新版もホームページ [www.beyondpod.mobi]からダウンロードできます。


ちなみにAndroid Marketには他のポッドキャストアプリがあり、試しにACastを試してみたのですが、(私にとっては)肝心の「つか金フライデー!」をダウンロードできませんでした。
つか金フライデー! フジテレビのポッドキャスティング『フジポッド』 [fujitv.cocolog-nifty.com]

2009/05/03

AndroidでSKK

AndroidでSKKによる日本語入力を可能にするアプリを(IME)公開された方がいらっしゃいました。
Android向けにSKKを作ってみた[d.hatena.ne.jp]

Ubuntuはもちろん、OpenBSD/ZaurusとWindowsでもSKKを使用している私としてはほっておけるわけもなく、早速インストールしてみました。

いい感じです。
ちなみに、この記事は全部AndroidのSKKで書いてます。

多少気になる点もあるのですが、何が原因か分からないのでもうちょっと調べてみます。


いやー、ますますAndroidが素晴しくなっていきます。

2009/05/01

Android + Web 版 GMail が使いやすくなった

Mobile 用 Web 版 GMail にミュート機能が追加されたとのことなので試そうとしたら、ラベル の変更もできるようになっていますね。
Official Google Mobile Blog: The Iterative Webapp - Gmail for mobile Gets Mute [googlemobile.blogspot.com]

リンク先のスクリーンショットは多分 iPhone か iPod Touchかと思いますが、 "Label as..." が無いようです。
うちのAndroid Dev Phone 1 にはあります。

Mobile 用 Web 版 GMail のエンジンが新しくなったとGoogle からアナウンスがあった頃からちょこちょこ試していました。
Official Google Mobile Blog: Gmail gets a new engine for iPhone and Android-powered devices [googlemobile.blogspot.com]

ちょっとうろ覚えですが、Web 版の GMail は現在読んでいるメールのラベル変更機能は無くて使いずらいなと思っていたような気がします。

Web 版の GMail には、現在読んでいるメールからInboxに戻ることなくその前後のメールに移ることができ、その点がアプリケーション版の GMail より便利だと思っていました。
(アプリケーション版はできませんよね?)
上の画像の赤で囲んだ箇所を選択することにより、前後に移動できます。

ラベルの変更もできるのであればより良いです。
あとはもうちょっと動作が速ければいいのですが、まあそのあたりはアプリケーション版と比べるのが間違っているのかもしれません。


ミュート機能の方は CNET の記事を読む感じでは、確かにモバイル環境では便利かもしれません。
グーグル、モバイル向け「Gmail」にミュート機能を追加 [japan.cnet.com]

メール作成者がこの箇所は絶対読んで欲しい部分の要約を20文字くらいで指定できるようになっても良い気がしますが、それは面倒かな。
サブジェクトだと短かすぎますし。

ところでCNETの記事中のスクリーンショットには "Label as..." がありますね。

2009/04/28

Android Dev Phone 1 をバージョン 1.5(cupcake) にアップデート ビデオ録画

Android Dev Phone 1(ADP1)にしたところ、Camcorderというビデオ作成アプリが追加されました。
Android Dev Phone 1 をバージョン 1.5(cupcake) にアップデート その1[hanagurotanuki.blogspot.com]


試しに

動画作成 -> ブログ記述 -> ブログに動画をアップ

という流れを全て ADP1 でやってみます。
(この記事です)




  1. Camcorder(標準アプリ) で動画作成

  2. Youtube(標準アプリ) で動画をアップ

  3. ブラウザ(標準アプリ)で動画の URL を確認

  4. Text Edit でブログ記事作成

  5. ブラウザ(標準アプリ)でブログ記事アップ


途中で消えてしまうと嫌なのでText Edit でテキストファイルに記述してからブログ記事作成しました。


Youtube にアップするだけなら簡単なのですが、ブログの記事書くのはすごくめんどくさかった。。。

ちなみに標準ブラウザでBloggerのブログ記述画面から動画のアップを試みたのですが、ダメでした。

Android Dev Phone 1 をバージョン 1.5(cupcake) にアップデート その4

前回からの続きです。
Android Dev Phone 1 をバージョン 1.5(cupcake) にアップデート その3[hanagurotanuki.blogspot.com]

ファームの配布元にある「Copy the Recovery Image Package to the Device」にある手順を行います。
大体はradio image と同じ手順です。

◯ Copy the Recovery Image Package to the Device

(1)〜(3) ADP1 を Ubuntu PC に接続してアップデートの準備を行う

(4) Ubuntu PC が ADP1 を認識しているかどうかの確認
At a command line, ensure that adb recognizes your device by issuing this command:
adb devices で Ubuntu が ADP1 を認識しているかどうか確認します。
~/work/android-1.5$ adb devices
List of devices attached
HT845GZ59637 device


(5) recovery image を ADP1 にコピーする
ファームの配布元の日本時間4/28 AM1:57時点の説明には"radio image package"ってあるのですが、"recovery image"ですよね?

adb push でsigned-dream_devphone-ota-147201.zipをADP1にコピーします。
~/work/android-1.5$ adb push signed-dream_devphone-ota-147201.zip /sdcard/update.zip
1216 KB/s (46867722 bytes in 37.612s)
このメッセージが出てもまだコピー中かもしれないので少し待っている方がいいらしいです。
もしコピー中なのに先のステップへ進んでしまうと、update中に"bad update.zip"とエラーが表示されるらしいです。

adb shell sync を実行してコピーが完了したかどうかを確認します。
~/work/android-1.5$ adb shell sync
このコマンドが返ったので、コピー完了を確認できました。

(6) ADP1 をリカバリモードで起動する
Reboot the device into recovery mode by holding down the HOME key during reboot. When the device enters recovery mode, it displays a "!" icon.
電源キー長押しでADP1 を一度電源 OFF にした後、HOMEキーを押しながら電源キーを押下することによりリカバリモードで起動します。
リカバリモードで起動するとradio image の時と同様に"i"が表示されます。

(7) リカバリコンソールでログ表示する
With the recovery console displayed, open the sliding keyboard and hold down the ALT+l key combination to enable log output in the recovery console.
ALT + lを同時押しでリカバリコンソールにradio imageの時と同様にログが表示されます。

(8) recovery image をインストールする
Next, hold down the ALT+s key combination to install the update.
ALT と s キー同時押しするとrecovery imageのインストールが始まります。

(9) recovery image を書き込み、再起動する
Press the HOME-BACK key combination to write the recovery image, update the firmware, and automatically reboot.
radio imageの時と同様にHOMEとBACKキーの同時押しでrecovery imageの書き込みが始まります。
しばらくすると勝手に再起動します。


以上でrecovery image のインストールも終了です。


recovery image のインストール後のファームバージョンは下の画像のようになっています。
Firmware version が 1.5 になっているので、無事インストールが終了したようです。


以上でファームバージョン1.5(cupcake)へのアップグレードが終了しました。

Android Dev Phone 1 をバージョン 1.5(cupcake) にアップデート その3

前回からの続きです。
Android Dev Phone 1 をバージョン 1.5(cupcake) にアップデート その2[hanagurotanuki.blogspot.com]

まずはファームの配布元にある「Update the Device Radio Firmware」にある手順を行います。
以下の番号は「Update the Device Radio Firmware」にある番号に合わせています。

◯ Update the Device Radio Firmware

(1)〜(3) ADP1 を Ubuntu PC に接続してアップデートの準備を行う

(4) Ubuntu PC が ADP1 を認識しているかどうかの確認
At a command line, ensure that adb recognizes your device by issuing this command:
adb devices コマンドを実行して確認します。
~/work/android-1.5$ adb devices
* daemon not running. starting it now *
* daemon started successfully *
List of devices attached
HT845GZ59637 device


(5) radio image を ADP1 にコピーする

Use the adb push command to copy the contents of the radio image package to the update.zip archive on the device's SD card:
adb push コマンドによりradio image を ADP1 にコピーします。
~/work/android-1.5$ adb push ota-radio-2_22_19_26I.zip /sdcard/update.zip
1049 KB/s (9181622 bytes in 8.539s)
このメッセージが出てもまだコピー中かもしれないので少し待っている方がいいらしいです。
もしコピー中なのに先のステップへ進んでしまうと、update中に"bad update.zip"とエラーが表示されるらしいです。

adb shell sync を実行してコピーが完了したかどうかを確認します。
~/work/android-1.5$ adb shell sync

このコマンドが返ったので、コピー完了を確認できました。

(6) ADP1 をリカバリモードで起動する
Reboot the device into recovery mode by holding down the HOME key during reboot. When the device enters recovery mode, it displays a "!" icon.
電源キー長押しでADP1 を一度電源 OFF にした後、HOMEキーを押しながら電源キーを押下することによりリカバリモードで起動します。
リカバリモードで起動すると下の画像のような画面が表示されます。



(7) リカバリコンソールでログ表示する
With the recovery console displayed, open the sliding keyboard and hold down the ALT+l key combination to enable log output in the recovery console.
ALT + lを同時押しでリカバリコンソールにログが表示されるようにします。

(8) radio image をアップデートする
Next, hold down the ALT+s key combination to install the update. An "installing update" icon and progress bar (or a similar status message) are displayed ??when the progress bar completes, the installation is finished.
ALT と s キー同時押しするとインストールが始まります。

(9) radio image を書き込み、再起動する
Press the HOME-BACK key combination to write the radio image, update the firmware, and automatically reboot.
HOMEとBACKキーの同時押しでfirmwareの書き込みが始まります。
しばらくすると勝手に再起動します。

以上でradio image のアップデートが終了しました。


次回に続きます。
Android Dev Phone 1 をバージョン 1.5(cupcake) にアップデート その4[hanagurotanuki.blogspot.com]

Android Dev Phone 1 をバージョン 1.5(cupcake) にアップデート その2

前回からの続きです。
ndroid Dev Phone 1 をバージョン 1.5(cupcake) にアップデート その1[android-developers.blogspot.com]

◯ ファームのアップデート
私は "I can't speak English." な人なんですが、アップデートはファームの配布元にあるとおりの手順で行ったつもりです。

アップデートは Ubuntu 9.04 にインストールした Android 1.5 Early Look SDK で行いましたが、DDMSによるスクリーンショットの取得は普段Androidの開発用に使用している WindowsXP で行いました。
Download the Android 1.5 Early Look SDK


以下は私の作業したUbuntu 9.04 の環境です。
~/work/android-1.5$ adb version
Android Debug Bridge version 1.0.20
~/work/android-1.5$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=9.04
DISTRIB_CODENAME=jaunty
DISTRIB_DESCRIPTION="Ubuntu 9.04"


私が行った手順を続けます。

ファームの配布元の説明によると、ファームのアップデートには下記の2種類の手順があるようです。
  • Flashing the device using an updated recovery image (recovery-image method)

  • Flashing the device using fastboot commands (fastboot method)

"I can't speak English." な私の英訳によると、主な違いはfastbootコマンドを使用するかどうからしいのですが、私は前者のrecovery-image methodで行いました。
こちらが straightforward operation らしいですし。


インストールの前にファームの配布元から下記の2ファイルを取得しました。
~/work/android-1.5$ ls
ota-radio-2_22_19_26I.zip signed-dream_devphone-ota-147201.zip



次回に続きます。
Android Dev Phone 1 をバージョン 1.5(cupcake) にアップデート その3[hanagurotanuki.blogspot.com]