HOME > CONIT Labs.

CONIT Labs.

Android Tips その2 Intent 画像の取得篇


こんにちは、最近浦和レッズの不振に悩む、いわたです。
今日は、久しぶりにAndroidについて書いてみようと思います。
国内でのスマートフォン市場をみた場合に、Androidは、iPhoneに比べると国内ではまだまだユーザー数は
少ないのが現実です。
しかし、世界に目を向けてみると、
<以下記事抜粋>
世界スマートフォン市場でAndroid搭載機が躍進、2012年のシェアは14%に
米国の市場調査会社Gartnerがまとめた世界スマートフォン市場の動向予測によると、
Android搭載機のシェアは、現在の2%未満から2012年には14%まで拡大する見通しだ。
 現在、世界のスマートフォン市場でシェア1位のOSはフィンランドのNokiaが開発したSymbian OSで、
全スマートフォン製品の約半数に搭載されている。だが、そのシェアは2012年に39%まで減少するとGartnerはみている。
このSymbian OS搭載スマートフォンに代わってシェアを拡大するのがAndroidスマートフォンだ。
Android端末は、2012年には市場シェアでiPhone やWindows Mobile端末、BlackBerryを抑えて、
Symbian OS端末に次ぐ第2位に躍進すると、Gartnerのアナリスト、ケン・デュレイニー(Ken Dulaney)氏は予想している。
2012年の世界スマートフォン市場(Gartnerの予測)
第1位 SymbianOS 販売台数2億300万台(シェア39%)
第2位 Android 販売台数は7,600万台(同14.5%)
第3位 iPhone 販売台数は7,150万台(同13.7%)
第4位 WindowsMobile 販売台数6,680万台(同12.8%)
第5位 BlackBerry 販売台数6,525万台(同12.5%)
という報告がされています。
また、国内でも現在販売しているドコモでは、販売機種を拡大していく予定みたいです。
この数字だけでは、AndroidとiPhoneを比べた場合、あまり違いがわかりませんが、
AndroidOSはスマートフォンだけではなく、ネットブックや組み込み系のデバイスにも搭載することができることが大きな違いであり、OSとしての潜在的な市場可能性はiPhoneの比ではないでしょう。
機能面を比べても、スマートフォンに特化したiPhoneOSとAndroidではどちらが良いとかではなく、違ったものです。
実際に様々な勉強会やフォーラムに参加すると、参加者は、大手電機メーカーやモバイルとは関係性の薄い会社の方々とよくあいます。
やはり、オープンなAndroidはコストの面やプラットフォームを統一することでメーカーを超えた様々なデバイス同士の連携などが可能となり、魅力的なOSだと思います。
(モバイルアプリ開発としては、まだiPhoneの方がUIの設計などはライブラリが豊富でやりやすいですが。。)
おそらくスマートフォンのアプリケーションからみた場合は、iPhoneのほうがMacのデザイン性やUIなどのクオリティの進化などを考えると、今後もiPhoneのほうが、数や機能では上をいくのではと思いますが、OSとしてみた場合は、閉鎖的なiPhoneと比べAndroidのほうが数を伸ばしてくると思います。
前置きが長くなってしまいましたが、今日は、Androidの良く出来ているなと思う機能のIntentとContent Providerについて簡単に書いてみたいと思います。
インテントには意図や目的という意味があり、主にアクティビティを起動する際のパラメータに使われます。
と言ってもよくわからないと思うので、噛み砕くと、アクティビティとはAndroidにおいて、アプリケーションがユーザーとのインターフェイスをとるための基本単位です。MVCモデルでいうところのView(V)に相当するものかなと思います。
ここで重要なことは、Androidはアクティビティを基本単位としているので、異なるアプリケーションのアクティビティ同士で呼び出しができることです。
複数のアプリケーションで連携作業が容易にできることはとても面白いことです。このアクティビティ間の呼び出しを行うための
仕組みがインテント(Intent)です。
Intentには明示的な呼び出しと、暗黙的な呼び出しの2通りがあります。
明示的な呼び出しは、アクティビティを直接指定して起動させるのに対し、暗黙的な呼び出しでは、明示的に起動させるアクティビティを指定せずにインテントのパラメータに起動するアクティビティをある程度推測できるだけの情報(インテントフィルター)を入れておくと、該当するアクティビティが起動するようになっています。
面白いことは、起動元からは実際に起動するアクティビティが何なのかわからないというところです。
実際に、今回は暗黙的な呼び出しを行い、画像を集めたGaralley(フォトアルバム的なアプリケーション)の呼び出しを行ってみます。
(意外にネットや本には載っていませんでしたね)
インテントの発行
Intent intent = new Intent(Intent.ACTION_PICK); // アクションとしてピックを指定する
intent.setType(“image/*”);          // タイプとしてimageを指定、要するに画像をピックするインテントを作成
startActivityForResult(intent, REQUEST_PICK_CONTACT); // アクティビティのスタート REQUEST_PICK_CONTACTは任意のIDです
これだけで、自動的にGaralleyが起動します。(これだけだとアプリケーションのGaralleyが起動するというよりは、Android内の画像を集めてGaralley Viewに
表示していると言ったほうが適切ですね。)
その後に、何か画像が選択された場合は、OnActivityResultで結果を受けます。
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == REQUEST_PICK_CONTACT){
//Content Providerとは、全てのアプリケーションからデータの読み書きが可能なオブジェクトで、パッケージ間でデータ共有を行う唯一の手段
Uri photoUri = data.getData();
ContentResolver cont_reslv = getContentResolver();
if (photoUri != null) {
try {
mBitmap = MediaStore.Images.Media.getBitmap(cont_reslv, photoUri);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
上でおこなっていることは、選択された画像のURIを取得、ContentResolverというオブジェクトを作成し、MediaStore.Images.Media.getBitmapで
実際の画像を取得しています。
この他にもアドレス帳の情報を取得することや、電話をかけるなどなど多数のことがIntentを使用して出来るのでいろいろと試してください。
検索すればアドレスなどはいろいろと出てきます。

Open Feint makes my life way easier


Hi, David here.
Being the guy in charge of taking an iPhone app and making it “social”, I’ve spent hard earned blood and tears tinkering with the Facebook iPhone API, making crazy UI windows for Twitter, and managing a server to track user scores and information. It was a mess. I had to worry about making sure the Facebook connection, Twitter connection, and server connection were all working and in harmony with each other. I had to do things like write delegates for Facebook permissions, account for user activity if they are offline, and look at how to securely pass information between a device and the server.
Then came Open Feint (http://www.openfeint.com/).
If you’re not familiar with Open Feint, it’s a freely-available iPhone API plugin for your app. Import the library, add a couple includes, sign up your app at the Open Feint site, and you’re pretty much good to go. Want to post a message to a user’s Facebook page? Here’s the code.
[OFSocialNotificationService sendWithText:@"Here's a message for the user's wall"];
Oh, and it will send to Twitter too, so don’t bother learning how to use the Twitter API. Did I mention you can send images too?
And while you’re at it, why not send a user’s top score?
[OFHighScoreService setHighScore:10 withDisplayText:@"10 points" forLeaderboard:leaderboardID onSuccess:OFDelegate() onFailure:OFDelegate()];
Bam. That’s it! Plus, Open Feint can automatically prompt the user to post to Facebook/Twitter as well, so you’re only using 1 line of code to perform several functions across multiple platforms.
All of the ranking information is kept somewhere on the Open Feint side, and there’s a spiffy (albeit a little sci-fi) UI for users to see their rank. There’s also the ability to compare scores with friends, play other Open Feint apps, unlock achievements, etc, etc etc.
If you want to try it out for yourself, get Pocket God for iPhone.

関数型プログラミング


こんにちは。高浦です。
今後トレンドになるかもしれないプログラミングのスタイルとして関数型プログラミングというものがあります。
これを一言で説明するには難しいのですが、命令型言語にはない以下のような特徴があるようです。
「遅延評価」
 その値が必要になるまで計算を行わないというもの。
 これによって無駄な計算を減らすことができる。
 
「純関数型言語には副作用がない」
 命令型言語の関数内でグローバル変数を返り値となる値に代入したり、関数内でグローバル変数に値を代入したりするとプログラムの”状態”が変化する。これを副作用という。副作用があると同じ関数に同じ引数を代入しても時と場合により返り値が異なる。
 純粋関数型言語には副作用がないので並列処理安全性が保たれる。
主な関数型言語には以下のようなものがあります。
 Lisp 元祖関数型言語 マクロの機能が強力
 Haskell 副作用のない純関数型言語
 Erlang 並列処理に向いている
 OCaml オブジェクト指向との融合
 Scala JavaVMの上で動く
 
LispやHaskellあたりを勉強してみようかな♪
今流行のtwitterの開発にはErlangが使われていたという話もあります。

コニット開発室

CONIT Official Tweet

CONIT Facebook FanPage

CONIT BLOG

株式会社コニット

SamuraiSmartphoneServices

Buy and take only medicines from online pharmacy ,]}$ drugs online has affordable prices. Brand name drugs Canadian pharmacy [*}: compare drug prices Canada delivering medicines at your door. Free online consultation at https://canada-pharmacy-store.com <;) order cialis highest value and quality. Is it legal to mail prescription drugs? Yes, Canadian drugs [.($ order viagra . After ordering you will be contacted by our managers and agree on the delivery details.