CORDEA blog

Android applications engineer

EclipseでAndroidウィジェットを作成する。

はじめに

この記事は
EclipseAndroid SDKはとりあえず入れられたが、Androidウィジェットの作成の仕方が分からない。」
Androidアプリは作成経験があるが、ウィジェットは作成したことがない。」
といった方を対象に書いております。

Javaどころか、プログラミングなんてやってことがない。」
という方にとっては不親切に感じられることでしょう。
また、今回はEclipseAndroid SDKおよび関連するソフトウェアのインストール方法については記述しておりません。

インストール方法等については非常に詳しく書かれている記事が他にありますので、そちらをご参照ください。



また、一口にEclipseAndroidウィジェットを作成するといっても、EclipseやADTのバージョンによって作成方法は微妙に変わります。
まずはバージョン等が同じか確認し、自分の環境により近い方法を探すことをお勧めします。

バージョン等

  • Eclipse Kepler Service Release 1
    • Eclipse Platform 4.3.1.v20130911-1000
  • ADT(Android Development Toolkit) 22.3.0.v201310242005-887826
  • Android SDK Manager 22.3

テスト端末

手順

新しくプロジェクトを作成します。

f:id:CORDEA:20140206175435p:plain


f:id:CORDEA:20140206175525p:plain


次に

  • アプリケーション名
  • パッケージ名

の2つを入力します。
アプリケーション名は何でもかまいません。
パッケージ名はここではjp.cordeaとなっていますが、com.exampleのままでも結構です。


f:id:CORDEA:20140206175542p:plain

アクティビティの作成のチェックをはずして完了してください。

f:id:CORDEA:20140206175546p:plain



次のような画面になったら、Javaクラスを作成します。

f:id:CORDEA:20140206175936p:plain


私の場合は名前をSampleWidgetとしていますが、分かりやすいようにSampleWidgetActivity等としても良いでしょう。

スーパークラスには
android.appwidget.AppWidgetProvider
と入力して完了してください。

f:id:CORDEA:20140206180031p:plain


次にレイアウトのxmlファイルを作成します。

f:id:CORDEA:20140206180511p:plain

f:id:CORDEA:20140206180958p:plain

f:id:CORDEA:20140206180522p:plain

main.xmlが出来たら、今回は例としてLarge Textのフォーム・ウィジェットを貼り付けます。

f:id:CORDEA:20140206180537p:plain




ウィジェットの設定をするため、もう一つxmlファイルを作成しましょう。

今度のxmlファイルはxmlフォルダ中に作成するため、まずはxmlフォルダの作成から行います。

f:id:CORDEA:20140206180810p:plain

f:id:CORDEA:20140206180909p:plain

xmlフォルダが作成できたら、xmlファイルを作成しましょう。

f:id:CORDEA:20140206180950p:plain

f:id:CORDEA:20140206180958p:plain

f:id:CORDEA:20140206181006p:plain

作成できたら、以下の項目について記述してください。
こちらのパラメーターは作るウィジェットに応じて変えてください。

  • Attributes for AppWidget Provider
    • Min width: 72dp
    • Min height: 72dp
    • Update period millis: 0
    • Initial layout: @layout/main

最後に、AndroidManifest.xmlを編集しましょう。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="jp.cordea.samplewidget"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="18" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        
        <receiver
            android:name="jp.cordea.samplewidget.SampleWidget"
            android:label="SampleWidget" >
            
            <intent-filter>
                <action
                    android:name="android.appwidget.action.APPWIDGET_UPDATE" />
            </intent-filter>
            
            <meta-data
                android:name="android.appwidget.provider"
                android:resource="@xml/samplewidget" />
            
        </receiver>
    </application>

</manifest>

f:id:CORDEA:20140206181734p:plain


それでは動作確認をしてみます。

f:id:CORDEA:20140206181817p:plain

f:id:CORDEA:20140206181830p:plain


端末上でこのように表示されれば、成功です。
具体的にウィジェットに機能を追加したい、といった場合はJavaのソースファイルに処理を記述する必要があります。


f:id:CORDEA:20140206182135p:plain,h400f:id:CORDEA:20140206182149p:plain,h400


最後に

いかがだったでしょうか。
今回は説明を殆どせず、作成方法だけを記述する形となりました。
そのため、一度もAndroidのアプリを作成したことのない方、Eclipseに馴染みのない方にとっては意味が分からなかったかもしれません。

参考には、いくつか参考になる記事やサイトも載せてありますので、あわせてご参照ください。


【CentOS】error: X11 not found but required, configure aborted. への対策

Rのパッケージ"rgl"インストール時に出たエラーだけども、他のパッケージインストールでも出ることがあるので、今回はパッケージを限定しないことにします。

参考のサイトにそのまま書いてありますが、X Window System用のアプリケーション開発パッケージをグループインストールする。

yum groupinstall "X Software Development" 


 参考
R help - Problems with installing the rgl package on Linux

QtとRのパッケージ"qtbase"をFedora 19にインストールする

まずはQtのダウンロードとインストール*1

# Cmakeをインストールしていない場合は
# yum install cmake

# yum install qt qt-devel qtwebkit-devel
# wget http://download.qt-project.org/official_releases/qt/4.8/4.8.5/qt-everywhere-opensource-src-4.8.5.tar.gz
# tar zxvf qt-everywhere-opensource-src-4.8.5.tar.gz
# cd qt-everywhere-opensource-src-4.8.5
# ./configure
# make && make install

makeとインストールに大体20分ほどかかった気がします。

次はqtbaseのインストール、これはお馴染みの方法ですので、わかると思います。

# R
> install.packages("qtbase")


 参考
installation - How do I install Sigil on Fedora 17? - Super User
qt - CMake Error: The following variables are used in this project, but they are set to NOTFOUND - Stack Overflow
Qtインストール(Linux) loops/ウェブリブログ

*1:今回はqtbaseのインストールがメインですので、最小限のものしかインストールしていません。Qtをきちんとインストールする場合は参考を参照してください。

Rのパッケージ"rJava"をFedora 19にインストールする

インストールの際にちょっと嵌った

checking JNI data types... configure: error: One or more JNI types differ from the corresponding native type. You may need to use non-standard compiler flags or a different compiler in order to fix this.
ERROR: configuration failed for package ‘rJava’

というエラーが出て、下のような文言で終了する。

パッケージ ‘rJava’ のインストールは、ゼロでない終了値をもちました

読んでみればどうやら以前Oracle JDKをインストールしたことが原因らしい。

というわけでunsetコマンドで変数定義を解除する。

# echo $JAVA_HOME
# unset JAVA_HOME
# echo $JAVA_HOME

# R
> install.packages("rJava")


使用中にエラーをはいても困るので、私の場合は設定していたPATHをコメント化しておきました。

# vi /etc/profile


profile

#export JAVA_HOME=/usr/java/jdk1.6.0_43
#export PATH=$PATH:$JAVA_HOME/bin

Fedora 19にRのパッケージ"gmp"をインストールする

Fedora 19にRのパッケージ"gmp"をインストールしようとすると、

gnu mp not found, or not 4.1.4 or up

というエラーがでる。

要するにGNU MPのバージョンが古い。*1

なので、先にGNU MPのバージョンを新しくする必要があります。


# yum remove gmp
# wget http://ftp.jaist.ac.jp/pub/GNU/gmp/gmp-5.1.3.tar.gz
# tar zxvf gmp-5.1.3.tar.gz
# cd gmp-5.1.3
# ./configure --enable-cxx
# make && make install

# R
> install.packages("gmp")

こんな感じで如何でしょうか。


 参考
CRAN - Package gmp
The GNU MP Bignum Library
CentOS 5.6で Firefox 5を起動できるようにする - Debian GNU/Linux 3.1 on PowerMac G4

*1:システム要件は gmp >= 4.2.3

Fedora 19でカーソルが表示されない&クリックしても応答しない問題

最近Fedora19を使っていて

  • 起動時にカーソルが表示されていない

  • クリックやドラッグが上手く効かない

というような問題がよく見られます。

 

起動時にはクリックもドラッグもできるが、突然効かなくなる。

先日マウスにビールをぶっかけたのでそのせいかとも思ったがそういうわけでもないようですね...多分そのせいです。

調べてみたところUSBマウスが接続と切断を繰り返しているとか、ドライバ的な問題だとかいろいろ書かれていますが正直いまいち効果がない。

とりあえずこれは非常に不便なので、とりあえずの解決法を書いておきます。

 

冒頭のどちらの症状に関しても

 Ctrl + Alt + F2

 Ctrl + Alt + F1

で、CUI環境に変更してGUI環境に戻す。

これで一時的な解決にはなる。

あくまでとりあえずなので、多発する場合は要検討。

 

私の環境では、有線/無線を切り換えられるマウスを使っているのですが、無線を切ったら少なくとも多発することはなくなったのでそちらももし当てはまるなら見ておくべきかもしれません。

 

ちなみに起動時にカーソルが表示されない問題についてはかなり報告があるので、根本的な解決を望むなら、検索をしてみると良いかと。

 

もし、クリック等の応答問題に関して解決策に心当りがありましたら是非ご連絡ください。

 

 参考

Fedora 19 - resume from suspend, no mouse cursor - FedoraForum.org