Android アプリ開発時の汎用関数の紹介

日曜日, 5月 16th, 2010

自分がAndroid アプリの開発をやるようになって、これでもう1年は経過したのではないかと思っています。1年経った今でも、Androidアプリを開発するときは分からないことが多く、分からないことが出てくるたびにGoogle先生のお世話になったり、過去に自分が書いたコードを探して見てみる、などということをしてきました。そんな中で、自分がAndroid アプリを開発する際に比較的よく使う関数群を汎用関数として、Utilクラスとしてまとめてみましたのでその一部を紹介します。

バージョン情報の取得

Androidアプリケーションには、1つのアプリケーションにつき必ず1つのAndroidManifest.xmlというファイルが存在します。このAndroidManifest.xmlファイルには、アプリケーションの名前や使用するインテント名、サービス名、バージョン情報などなど多くの情報がXMLによって書かれています。このAndroidManifest.xmlファイルに書かれているバージョン情報を取得し、そのバージョンによって処理を変える場合があります。そこで、現在のアプリケーションのバージョンを知るための関数を2つ作成しました。

作成したバージョン情報取得関数

// バージョン情報の取得関連
public static int getVersionCode( Context context ) {
    int ver;
    try {
        ver = context.getPackageManager().getPackageInfo( context.getPackageName(), 1 ).versionCode;
    } catch (NameNotFoundException e) {
        ver = -1;
    }
    return ver;
}

public static String getVersionName( Context context ) {
    String ver;
    try {
        ver = context.getPackageManager().getPackageInfo( context.getPackageName(), 1 ).versionName;
    } catch (NameNotFoundException e) {
        ver = "";
    }
    return ver;
}

説明

Android のバージョンには2種類あり、1つ目は整数値で表現された番号。2つ目は1.3.12などのように詳細な情報が文字列として表現されているバージョン名です。今回作成した関数では前者をVersionCode、後者をVersionNameとして取得しています。なお、これらの情報はContextクラスから、PackageManagerクラスを取得し、そこからさらにPackageInfoを取得するとversionCodeとversionNameの情報が得られます。それらを単純にgetVersionCode, getVersionNameとした関数です。

(続きを読む…)

人気のプログラミング言語ランキング

水曜日, 1月 13th, 2010

マイコミジャーナルのサイトで紹介されていた人気プログラミング言語ランキングについてです。ちなみに、ランキングの情報源はTIOBE Programing Community Indexです。複数の検索エンジンの検索結果からプログラミング言語の人気をインデックス化したもので、2010年01月現在の結果がまとめられているようです。


(続きを読む…)

JavaとC++のコラボレーション【JNI】

木曜日, 1月 7th, 2010

JNI(Java Native Interface)と呼ばれる技術を使うことにより、JavaとC++の2つのプログラミング言語を統合的に扱うことができます。このように2つのプログラム言語を統合的に扱い、1つのプログラムを作ることは色々なメリットがあります。そのメリットの1つは、1つのプログラミング言語だけでは享受することのないメリットを複数のプログラミング言語を用いることにより、享受できるようになることです。具体的には、GUIに優れたJavaと、実行速度の高いC/C++を組み合わせることにより、パフォーマンスに優れたプログラムをより短時間で作れるようになるでしょう。

JNIを使うための準備

環境は、UNIX/Linuxを対象としています。が、ウェブ上や書籍なんかを見る限り、WindowsでもJNIの利用は可能なようなので、Windows上で利用したい方は一度探してみてください。そのうち、自分もWindows用の利用方法も書くかもしれません。

まず、JNIを利用するための準備ですが、これは特にありません。まぁ当然ながら、JavaとC++を利用するということで、JavaとC++の実行環境はそれぞれ必要になります。これらは、お使いのディストリビューションによって異なることもありますので、各自準備しておいてください。

では、続きでは実際のサンプル用のソースコードを書いていきます。

(続きを読む…)

Androidでタグクラウドを実装する(ソースコード付き)

日曜日, 12月 13th, 2009

Android開発を行っていて、意外にもライブラリなどが存在しなかったのがタグクラウドです。まぁ、見つからないなら自分で作ってしまえ、という考えで下の画像のようなタグクラウドをちょっと実装してみました。なので、そのTagCroudクラスとそれを利用するために必要なTagクラスの2つをここに公開します。自分自身Javaにはあまり強くないことと、Androidアプリ開発を始めてまだ間もないということからおかしな実装をしている部分もあるかと思いますが、その場合にはコメントにてお知らせいただくか、twitter(@1987yama3)までご連絡ください。

tagCroud

Tagクラス

タグクラスはタグ(語句とその出現数)を格納することが主な役割です。また、これに加えてタグクラウド上でタグをクリック(タップ)した際の挙動をここに記述できるようにしています。具体的には、クリック時には、タグクラス内のIntent型のメンバ変数intentを引数としてインテントを発行します。タグクラスのメンバ変数(語句、出現数、インテント)はSetメソッドによりセットすることができます。

(続きを読む…)

Androidアプリ開発中

月曜日, 11月 23rd, 2009

先週日曜日くらいから新しいAndroidアプリを開発中です。そして、そのAndroidアプリの機能実装がひと段落したため、ここから少しの間はデバッグ作業&細かな仕様変更をやっていき、12月中旬ころに正式リリースできたらなぁと思っています。

使用しているサービス関係

  • BarcodeScanner アプリ
  • 楽天API
  • AmazonWebService(AWS) API

上記3サービスを利用したアプリを開発しています。大変だった部分は、AmazonWebService(AWS)部分でしょうか?AWSは先日仕様変更があり、リクエストURLに署名を加えなければならなくなったようで、この署名認証をJavaで実装しようと思っていたのですが、Web上をいろいろ探し回って、実装しても思うように動かずにどうしようかと苦戦していました。結局この署名認証は、自分の保有しているWebサーバー上のPHPスクリプトにリクエストを投げ、署名認証を行い、そのままPHP上でXMLファイルを取得し、XMLデータをJavaに返すように変更しました。つまり、自分のWebサーバーがダウンでもしたらアプリの機能にも影響が出てしまうような状態になっています。とりあえず、ここをなんとかして、Android内で署名を付加できるようにしたいなぁと思います。

(続きを読む…)

Get Adobe Flash playerPlugin by wpburn.com wordpress themes