<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" version="2.0">

<channel>
	<title>mucchinのAndroid戦記</title>
	
	<link>http://android.roof-balcony.com</link>
	<description>mucchinこと私とAndroidアプリとの戦い(と言うか、アプリ開発)の記録です。ぶち当たった問題や疑問点と、その解決策などを紹介していきます。更新は不定期です・・・。</description>
	<lastBuildDate>Wed, 06 Jul 2011 01:02:23 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/Mucchinandroid" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="mucchinandroid" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Error generating final archive: Debug certificate expired on …の解決方法</title>
		<link>http://android.roof-balcony.com/debug/certificate-expired/</link>
		<comments>http://android.roof-balcony.com/debug/certificate-expired/#comments</comments>
		<pubDate>Thu, 27 Jan 2011 07:32:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[エミュレータ/デバッガ関連]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[APK]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Emulator]]></category>
		<category><![CDATA[SDK]]></category>
		<category><![CDATA[アンドロイド]]></category>
		<category><![CDATA[エミュレータ]]></category>
		<category><![CDATA[環境設定]]></category>

		<guid isPermaLink="false">http://android.roof-balcony.com/?p=1254</guid>
		<description><![CDATA[ある日突然、「Error generating final archive: Debug certificate expired on …」というエラーメッセージが表示され、Androidアプリのコンパイルが出来なくなっ [...]]]></description>
			<content:encoded><![CDATA[<p class=qmark>ある日突然、「Error generating final archive: Debug certificate expired on …」というエラーメッセージが表示され、Androidアプリのコンパイルが出来なくなったときの解決方法は？</p>
<p>皆さんは、上記のエラーメッセージが突然表示されだして、Androidアプリのコンパイルが突然出来なくなった！という経験は御座いますでしょうか。<br />
私は、自分が作ったAndroidアプリの機能追加でもしてみようかと思って、結構久しぶりにEclipseを立ち上げて、アプリをコンパイルしてみたら、突然上記のエラーメッセージが出てコンパイルできなくなってたので、めちゃくちゃ焦りました。</p>
<p>調べてみると、結果的に、この経験は、Androidの勉強を始めてめでたく1年が経過した、という事で、ある意味おめでたい事なのですが、解決できなくては、Androidアプリのコンパイルが出来ないので、困りますよね。<br />
ここでは、上記のエラー発生時の対処方法を紹介したいと思います。</p>
<hr />
冷静にエラーメッセージを読めば、何かしらの証明書の有効期限が切れた、という事は想像できる方もおられるかと思います。<br />
その通り、何かしらの証明書の有効期限が切れたので、このエラーは出ています。<br />
その何かしらというのは、以下のディレクトリにあるファイルです。<br />
ディレクトリ：C:\Documents and Settings\(Windowsユーザ名)\.android<br />
ファイル：debug.keystore<br />
(Windows XPなら、上記のディレクトリにありますが、VistaやWindows 7なら、正確にはちょっと違うディレクトリになるかと思います。)</p>
<p>解決策は簡単です。<br />
上記のdebug.keystoreを削除するだけです。</p>
<p>その後、念の為、全プロジェクトを再コンパイルさせておくとよいでしょう。<br />
一番簡単な手順は、Eclipseを使って以下のような手順を行えばOKです。<br />
メニュー->「Project」->「Clean」でOKです。<br />
画像で説明すると以下のような感じです。<br />
<img src="http://android.roof-balcony.com/images/certificate-expired/certificate-expired1.JPG" alt="Error generating final archive: Debug certificate expired on …の解決方法" width="100%" /></p>
<p>debug.keystoreの証明書の有効期限が1年に設定されているらしいので、このようになるみたいです。<br />
これだけでまた元通りコンパイルが通るようになります。</p>

<p><a href="http://feedads.g.doubleclick.net/~a/-phnBVK7ANff0PuQ5Xv6QACd_28/0/da"><img src="http://feedads.g.doubleclick.net/~a/-phnBVK7ANff0PuQ5Xv6QACd_28/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/-phnBVK7ANff0PuQ5Xv6QACd_28/1/da"><img src="http://feedads.g.doubleclick.net/~a/-phnBVK7ANff0PuQ5Xv6QACd_28/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://android.roof-balcony.com/debug/certificate-expired/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XperiaのAndroid 2.1へのアップデート方法</title>
		<link>http://android.roof-balcony.com/xperia/xperia-update/</link>
		<comments>http://android.roof-balcony.com/xperia/xperia-update/#comments</comments>
		<pubDate>Thu, 20 Jan 2011 06:03:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[XPERIA関連]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[XPERIA]]></category>
		<category><![CDATA[アンドロイド]]></category>

		<guid isPermaLink="false">http://android.roof-balcony.com/?p=1238</guid>
		<description><![CDATA[XperiaをAndroid2.1にアップデートする方法は？ 久しぶりの本サイトの更新です。 技術系のブログは、なかなか続けるのが大変だなぁと思う今日この頃です。 最近は、正直記事にするネタが尽きてきたのと、Androi [...]]]></description>
			<content:encoded><![CDATA[<p class=qmark>XperiaをAndroid2.1にアップデートする方法は？</p>
<p>久しぶりの本サイトの更新です。<br />
技術系のブログは、なかなか続けるのが大変だなぁと思う今日この頃です。</p>
<p>最近は、正直記事にするネタが尽きてきたのと、Androidアプリを自分で開発するよりも、他人のアプリを触りまくって、「すごいなー」と感心している事の方が多いです…。<br />
Android Marketを巡っていると、やはり個人では作れないようなすごいアプリがたくさん出回っていて、正直引けを感じてしまいます。<br />
但し、どうやって作ったんだろうか？と気になるので、それはそれで新しい勉強のネタになるので、それもいいかなと思っています。</p>
<hr />
話がそれてすみませんでしたが、本題です。<br />
本サイトに訪れる方でも、もしかしたら知らない人がいるかもしれない！と思いましたので、今回はXperiaのアップデートの件を記事にさせて頂こうと思います。</p>
<p>このブログをご覧頂いている方で、Xperiaをお持ちの方は結構多いかと思いますが、基本的に購入時点のAndroidのバージョンは、1.6ですよね。<br />
いつか、2系のOSにバージョンアップされるという噂があったので、待っていましたが、一向にバージョン更新の通知が来ないなぁと思っていたら、なんと既にアップデートが出来る状態にあるらしいと、最近知りました。<br />
私も、つい先日まで知りませんでしたが、ネットで調べ物をしているときに、たまたま知りました…。</p>
<p>肝心のアップデートの方法は、PCに接続してのアップデートでなければならないとの事です。なるほど、そりゃスマートフォン側に通知が来ないはずだ、と…。</p>
<hr />
<script type="text/javascript"><!--
google_ad_client = "pub-5719089567134682";
/* 468x60, 作成済み 10/08/10 */
google_ad_slot = "9091475988";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<hr />
という事で、バージョンアップの簡単な手順について説明させて頂きます。<br />
と言っても、以下のドコモのサイトを見れば、一目瞭然です。<br />
<a href="http://www.nttdocomo.co.jp/support/utilization/software_update/version_up/so01b/pc/index.html" target="_blank">Xperiaのパソコン接続によるバージョンアップ方法</a></p>
<p>私も上記サイトの手順どおりに実施しましたが、問題なくアップデートできました。<br />
詳しく計ったわけではないですが、作業時間は大体30分から45分ぐらいだったと思います。</p>
<p>Xperiaを、Android1.6から2.1へアップデートしての感想は、<br />
・動きが速くなった気がする。<br />
・文字フォントが変わったせいか、全体的に見やすくなった。<br />
・ライブ壁紙がキレイ<br />
etc</p>
<p>以下のサイトを見れば、更新内容が丁寧に説明されてました。<br />
<a href="http://www.sonyericsson.co.jp/product/docomo/so-01b/update/index.html" target="_blank">Xperia Android2.1対応の内容</a></p>
<p>個人的には、絶対アップデートすべきだと思います。<br />
プリセットのカメラ関連もアップデートされてるみたいですね。</p>
<hr />
あと、Androidアプリ開発者の方は、PCとXperiaを接続してデバッグする事もあろうかと思いますが、XperiaをAndroid2.1にアップデートすると、そのままではデバッグ接続が出来なくなります。<br />
一瞬焦りましたが、これも既にネット上で掲載されていました。<br />
以下の記事をご参照下さい。<br />
<a href="http://www.android-navi.com/archives/android_1/xperia_android21_1111/" target="_blank">Xperiaアップデート後、デバッグモードに出来なくなったときの対処方法</a><br />
Windows Updateとは、、、(苦笑)</p>
<hr />
最近は、全く記事を更新できず、申し訳ありません。<br />
毎日このサイトに訪れてくださっている方々で、お役にたった方が一人でもいらっしゃったら幸いです。<br />
全く技術的なことでなくて申し訳ありませんでした。</p>

<p><a href="http://feedads.g.doubleclick.net/~a/sdSR_fxGlmgypVxzPk-18PI5m-Q/0/da"><img src="http://feedads.g.doubleclick.net/~a/sdSR_fxGlmgypVxzPk-18PI5m-Q/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/sdSR_fxGlmgypVxzPk-18PI5m-Q/1/da"><img src="http://feedads.g.doubleclick.net/~a/sdSR_fxGlmgypVxzPk-18PI5m-Q/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://android.roof-balcony.com/xperia/xperia-update/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Androidのカメラで撮影して保存した画像ファイルの読込み方法</title>
		<link>http://android.roof-balcony.com/camera/picture-view/</link>
		<comments>http://android.roof-balcony.com/camera/picture-view/#comments</comments>
		<pubDate>Thu, 28 Oct 2010 07:00:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Camera関連]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Camera]]></category>
		<category><![CDATA[XPERIA]]></category>
		<category><![CDATA[アンドロイド]]></category>
		<category><![CDATA[カメラ]]></category>

		<guid isPermaLink="false">http://android.roof-balcony.com/?p=1230</guid>
		<description><![CDATA[Androidのカメラで撮影して保存した画像ファイルの読込み方は？ 前回のAndroidアプリのカメラ機能で撮影した画像の保存方法の続きです。 今回は、カメラで撮影したデータを実際に読み込んで画面表示などに使う手順を説明 [...]]]></description>
			<content:encoded><![CDATA[<p class=qmark>Androidのカメラで撮影して保存した画像ファイルの読込み方は？</p>
<p>前回の<a href="http://android.roof-balcony.com/camera/camera-save/" target="_blank">Androidアプリのカメラ機能で撮影した画像の保存方法</a>の続きです。<br />
今回は、カメラで撮影したデータを実際に読み込んで画面表示などに使う手順を説明します。<br />
せっかく撮影したのに、画面に出す事が出来ないのでは意味無いに等しいですからね…。</p>
<hr />
読み込み方は、保存の方法によって違ってくるかと思います。<br />
保存時、ファイルパスにOutputStreamで保存というやり方であれば、InputStreamを使って読み込めばいいでしょう。<br />
今回は、「MediaStore.Images.Media.insertImage()」を使って保存したデータの読み込み方について説明します。<br />
少々苦戦しましたが、以下のようなコードで読み込めます。</p>
<hr />
String[] proj = {<br />
　　MediaStore.Images.Media.DATA,<br />
　　MediaStore.Images.Media.DISPLAY_NAME<br />
};</p>
<p>Cursor c = getContentResolver().query(<br />
　　MediaStore.Images.Media.EXTERNAL_CONTENT_URI,<br />
　　proj, null, null, null);</p>
<hr />
MediaStore.Images.Media.insertImage()は、端末のデータベースにあるメディア専用のテーブルへデータを格納するという保存形式になっています。<br />
したがって、データの読み込み時は、query()メソッド等でCursorインスタンスを取得するという手順になります。<br />
通話ログやブックマークを取得するときと同じですね。<br />
コンテンツプロバイダを利用します。</p>
<p>上記サンプルコードの「proj」ですが、SQLで言うと、SELECT句で指定するカラムのリストを指定します。<br />
上記のサンプルコードでは、データの実体と、ファイル名を取得する、という意味合いになっています。</p>
<p>query()メソッドの第一引数は、外部メディアのメディア領域を示す「MediaStore.Images.Media.EXTERNAL_CONTENT_URI」を指定します。<br />
これは、保存のときにも使った定数です。</p>
<p>上記のサンプルコードでは、全部の画像を引っ張ってくるとなりますが、必要であれば、条件を指定する事も出来ます。</p>
<hr />
<script type="text/javascript"><!--
google_ad_client = "pub-5719089567134682";
/* 468x60, 作成済み 10/08/10 */
google_ad_slot = "9091475988";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<hr />
それでは、このサンプルコードの続きも掲載しておきましょう。</p>
<hr />
if(c.moveToFirst()){<br />
　　do{<br />
　　　　Bitmap bitmap = BitmapFactory.decodeFile(c.getString(0));<br />
　　　　String filename = c.getString(1);</p>
<p>　　　　//後はあなたのご自由に！</p>
<p>　　}while(c.moveToNext());<br />
}</p>
<hr />
たいしたサンプルコードでなくてすみません。<br />
但し、画像データの読み込みの部分は、結構貴重な情報だと思います。<br />
そうでもないよ、って事ならすみません。</p>
<p>APIリファレンスでは、MediaStore.Images.Media.DATAが指し示すデータの内容は「DATA STREAM」とだけ記述されています。<br />
最初は、InputStreamオブジェクトなのかな？と思ったんですが、上手く利用出来ませんでした。<br />
調べてみると、実はファイルパスが返されてくるんです。<br />
ですので、BitmapFactoryクラスのdecodeFile()メソッドを使って、Bitmapに変換しています。</p>
<p>ファイルパスだったら、、、DATA STREAMじゃねーじゃねーの？と思うんですが、どうでしょう…。<br />
AndroidのAPIリファレンスって、ちょっといい加減なトコロがあるような気がするんですが。。。</p>
<hr />
余談ですが、画像をMediaStore.Images.Media.insertImage()で保存すると、同時にサムネイル画像も保存してくれるみたいです。<br />
今回のサンプルコードでは、<br />
MediaStore.Images.Media.EXTERNAL_CONTENT_URIを使って画像を取り出しましたが、MediaStore.Images.Thumbnailsクラスを使えば、サムネイル画像が取り出せます。<br />
私も試してみて、紹介する程の内容でしたら、紹介したいと思います。</p>

<p><a href="http://feedads.g.doubleclick.net/~a/bJa13K0Ru2ww9shforpliZXcqKA/0/da"><img src="http://feedads.g.doubleclick.net/~a/bJa13K0Ru2ww9shforpliZXcqKA/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/bJa13K0Ru2ww9shforpliZXcqKA/1/da"><img src="http://feedads.g.doubleclick.net/~a/bJa13K0Ru2ww9shforpliZXcqKA/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://android.roof-balcony.com/camera/picture-view/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Androidアプリのカメラ機能で撮影した画像の保存方法</title>
		<link>http://android.roof-balcony.com/camera/camera-save/</link>
		<comments>http://android.roof-balcony.com/camera/camera-save/#comments</comments>
		<pubDate>Tue, 26 Oct 2010 02:36:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Camera関連]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Camera]]></category>
		<category><![CDATA[XPERIA]]></category>
		<category><![CDATA[アンドロイド]]></category>
		<category><![CDATA[カメラ]]></category>

		<guid isPermaLink="false">http://android.roof-balcony.com/?p=1217</guid>
		<description><![CDATA[Androidで、カメラ機能で撮影した画像の保存方法は？ 今回は、前回からの続編です。 Androidアプリのカメラのプレビュー画像の取得方法 この記事で紹介したカメラ機能の使い方で、取得したカメラ画像の保存方法の例を2 [...]]]></description>
			<content:encoded><![CDATA[<p class=qmark>Androidで、カメラ機能で撮影した画像の保存方法は？</p>
<p>今回は、前回からの続編です。<br />
<a href="http://android.roof-balcony.com/camera/preview-get/" target="_blank">Androidアプリのカメラのプレビュー画像の取得方法</a><br />
この記事で紹介したカメラ機能の使い方で、取得したカメラ画像の保存方法の例を2パターンほど紹介したいと思います。<br />
(カメラで取得した画像は、Bitmap型のオブジェクトとして生成済みという想定で話を進めます。)</p>
<hr />
<p class=checked>MediaStoreを使った保存処理</p>
<p>早速サンプルコードを示しますと、以下のようになります。</p>
<hr />
MediaStore.Images.Media.insertImage(getContentResolver(), bmp, &#8220;&#8221;, &#8220;&#8221;);</p>
<hr />
<strong>MediaStore.Images.Media</strong>クラスのstaticメソッド <strong>insertImage()</strong>を使います。<br />
MediaStoreは、android.providerというパッケージのクラスです。</p>
<p>第一引数は、ContentResolver型インスタンスです。<br />
普通にActivityを継承させたクラス上で実装する場合は、サンプルのように、getContentResolver()を使うといいでしょう。<br />
そうでなくて、この処理を別クラスとして実装した場合は、呼び元のActivityから、Context型インスタンスをコンストラクタを通じて渡すとかして使いましょう。</p>
<p>第二引数は、カメラ画像で生成したBitmap型インスタンスです。<br />
第三引数は画像のタイトルの文字列を、第四引数は画像の詳細説明を示す文字列を設定します。<br />
特に気にしないのであれば空文字でOKです。</p>
<p>こうすると、以下のディレクトリに保存されます。<br />
/sdcard/DCIM/Camera/</p>
<p>エミュレータでも、Xperiaでも、上記のディレクトリに保存されました。<br />
実際のファイル名は、重複しないように自動的につけてくれるっぽいです。</p>
<p>余談ですが、Xperiaについて話をしますと、Xperia標準のカメラアプリで取得した画像は、以下のディレクトリに保存されるようです。<br />
/sdcard/DCIM/100ANDRO/<br />
Xperia標準で搭載されているMediascape、Timescapeというアプリで閲覧できるカメラ画像は、このディレクトリに保存された画像ファイルのようです。<br />
ですので、先ほどの処理で保存した画像は、XperiaのMediascapeなどで閲覧する事は出来ませんでした。<br />
保存先を変えるには、今回紹介した方法とは別の方法で実装してやる必要があると思います。<br />
FileOutputStreamとかを使用して、ベタでファイルパスを指定してやればいけるかもしれません。<br />
次にFileOutputStreamを使う方法を紹介しますので、興味のある方は試してみてください。</p>
<hr />
<script type="text/javascript"><!--
google_ad_client = "pub-5719089567134682";
/* 468x60, 作成済み 10/08/10 */
google_ad_slot = "9091475988";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<p class=checked>ローカルファイルへの保存</p>
<p>ローカルファイルとは、アプリ毎に用意された保存領域に保存されるファイルの事です。<br />
具体的には以下のパスに保存されます。<br />
/data/data/パッケージ名/files/<br />
ローカルファイルについては、以下の記事を参照してください。<br />
<a href="http://android.roof-balcony.com/shori/strage/localfile-2/" target="_blank">Androidアプリのデータ保存方法の一つ「ローカルファイル」の使い方</a><br />
<a href="http://android.roof-balcony.com/debug/localfile/" target="_blank">ローカルファイルの保存先について</a></p>
<p>それではサンプルコードを示します。</p>
<hr />
try {<br />
　FileOutputStream out = openFileOutput(&#8220;a.jpg&#8221;, Context.MODE_WORLD_READABLE);<br />
　bmp.compress(Bitmap.CompressFormat.JPEG, 100, out);<br />
　out.close();<br />
} catch (Exception e) {<br />
　e.printStackTrace();<br />
}</p>
<hr />
まずはopenFileOutput()で、FileOutputStreamを生成します。<br />
openFileOutput()はContextのメソッドですので、先ほど紹介したgetContentResolver()と同じ使い方です。<br />
第一引数はファイル名を指定しますが、サンプルでは、「a.jpg」と固定ですが、このようにファイル名を指定してやらないといけないので、実用的なカメラアプリとするためには、ファイル名が毎回変わるように、ファイル名を決定するロジックも考えないといけませんね。<br />
(単純に、年月日時分秒などを使えばいいかと思いますが。)</p>
<p>そして、カメラ画像で生成していたBitmapオブジェクトを、そのOutputStreamへ流し込みます。<br />
Bitmapのcompressメソッドを使います。<br />
第一引数はファイルのフォーマットを指定します。<br />
第二引数はQualityを示す数値で、通常は100でいいでしょう。<br />
第三引数に、先ほどのOutputStreamを指定します。</p>
<hr />
ちなみに、エミュレータでは、カメラで保存した画像ファイルは、以下のように若干乱れが生じる場合があります。<br />
<img src="http://android.roof-balcony.com/images/camera-save/camera-save.jpg" alt="Androidアプリのカメラ機能で撮影した画像の保存方法" /></p>
<p>実機で確認すると、ちゃんと保存されている(はず)なので、カメラアプリを作って公開するのでしたら、実機でも動作確認しておいた方がよいと思います。</p>
<hr />
ちなみに、今回紹介した方法は、前回の<a href="http://android.roof-balcony.com/camera/preview-get/" target="_blank">Androidアプリのカメラのプレビュー画像の取得方法</a>の続きです。<br />
シャッター音なんて気にしないから、CameraのtekePicture()メソッドを使うという場合は、こんな回りくどい方法はしなくていいです。<br />
それはまた別の機会に紹介します。</p>
<p>次は、今回のやり方で保存した画像の一覧表示をさせる方法を考えたいと思っていますので、また紹介させて頂きます。</p>

<p><a href="http://feedads.g.doubleclick.net/~a/MF-f7PhdTNBeqrImBr7QLqoyyEo/0/da"><img src="http://feedads.g.doubleclick.net/~a/MF-f7PhdTNBeqrImBr7QLqoyyEo/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/MF-f7PhdTNBeqrImBr7QLqoyyEo/1/da"><img src="http://feedads.g.doubleclick.net/~a/MF-f7PhdTNBeqrImBr7QLqoyyEo/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://android.roof-balcony.com/camera/camera-save/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Androidアプリのカメラのプレビュー画像の取得方法</title>
		<link>http://android.roof-balcony.com/camera/preview-get/</link>
		<comments>http://android.roof-balcony.com/camera/preview-get/#comments</comments>
		<pubDate>Mon, 25 Oct 2010 07:21:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Camera関連]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Camera]]></category>
		<category><![CDATA[XPERIA]]></category>
		<category><![CDATA[アンドロイド]]></category>
		<category><![CDATA[カメラ]]></category>

		<guid isPermaLink="false">http://android.roof-balcony.com/?p=1203</guid>
		<description><![CDATA[Androidアプリのカメラのプレビューを画像として取得する方法は？ 前回のAndroidのカメラのシャッター音についての続きです。 Androidで、カメラ画像を、takePicture()を使わずに保存する方法です。 [...]]]></description>
			<content:encoded><![CDATA[<p class=qmark>Androidアプリのカメラのプレビューを画像として取得する方法は？</p>
<p>前回の<a href="http://android.roof-balcony.com/camera/shutter-sound/" target="_blank">Androidのカメラのシャッター音について</a>の続きです。</p>
<p>Androidで、カメラ画像を、takePicture()を使わずに保存する方法です。<br />
色々試してみて、なんとか画像として保存する事に成功したのですが、失敗談も含めて紹介したいと思います。</p>
<hr />
<p class=checked>失敗ケース1 getDrawingCache()</p>
<p>Androidで、画面のスナップショットを画像として保存させるような便利なAPIが存在するのか？という観点で、調べてみました。<br />
すると、以下のようなメソッドがありました。<br />
<strong>getDrawingCache()</strong><br />
これは、android.view.Viewクラスのメソッドです。</p>
<p>まず、getDrawingCache()を使ってみたら、nullが返されました。<br />
APIリファレンスを読むと、キャッシュを有効にしなければならない的な説明がありましたので、以下のメソッドを直前に実行させてみました。<br />
setDrawingCacheEnabled(true);</p>
<p>これで、nullではなく、一応はBitmapのインスタンスが返るようになりました。<br />
そのインスタンスを処理して、保存させたんですが、、、真っ黒な画像ファイルでした。<br />
エミュレータでも、Xperiaでも。</p>
<p>APIの使い方として間違っているとは思えなかったんで、カメラのプレビュー以外ならどうなんだろうと思って試してみました。<br />
普通のボタンとかだけを表示させた画面で同じ事をすると、ちゃんとアプリケーションの画像が保存されました。<br />
推論ですが、カメラのプレビューと、普通のViewでは、おそらく表示バッファが違うとかなんかで、、、このgetDrawingCache()では、カメラのプレビュー画像は取得できないんだろうと思い、この方法は断念しました。</p>
<hr />
<p class=checked>失敗ケース2 PreviewCallbackで渡されるバイト配列をそのまま処理</p>
<p>Androidのカメラ機能では、プレビューの処理や写真撮影などの処理を行う際に、コールバックさせるインスタンスを設定することが出来ます。<br />
カメラのプレビュー中、コールバックを設定していれば、逐一コールバックされるのが、PreviewCallbackです。<br />
具体的にいうと、以下のメソッドで設定したコールバックです。<br />
<strong>setPreviewCallback (Camera.PreviewCallback cb)</strong><br />
これは、android.hardware.Cameraクラスのメソッドです。<br />
プレビュー処理中、定期的に、引数で設定したPreviewCallback型インスタンスの<strong>onPreviewFrame()</strong>メソッドがコールされます。<br />
このメソッドの引数として、byte型の配列が渡されてくるのですが、これがプレビュー画像のデータになっているはずです。</p>
<p>ですが、このバイト配列は、そのままだとBitmapに変換出来ません・・・。<br />
例えば、この配列を、以下のようなメソッドに渡すと、nullが返されてしまいます。<br />
decodeByteArray (byte[] data, int offset, int length)<br />
これは、android.graphics.BitmapFactoryクラスのメソッドなんですが、このメソッドでnullが返されるという事は、byte配列が正しいフォーマットではない、という事になります。</p>
<hr />
<script type="text/javascript"><!--
google_ad_client = "pub-5719089567134682";
/* 468x60, 作成済み 10/08/10 */
google_ad_slot = "9091475988";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<hr />
<p class=checked>成功ケース PreviewCallbackで渡されるバイト配列を加工する</p>
<p>先ほどの方法は、なんとかしてbyte配列を変換してやればいけるはずだ！と信じ込み、もう少し粘って調べてみました。<br />
すると、同じような質問をされているところがありました。<br />
<a href="http://groups.google.co.jp/group/android-sdk-japan/browse_thread/thread/09f3545c7f7cfdac/018d2eb85fb9cb44" target="_blank">カメラから取得したbyteデータをbitmap化したい</a><br />
この記事のsaikoroさんが教えてくれている方法でいけます。<br />
PreviewCallback 型インスタンスのonPreviewFrame()と、変換メソッドだけ抜粋します。(これだけでわからない方は、元サイトを参照してみてください。)</p>
<hr />
public void onPreviewFrame(byte[] data, Camera camera) {<br />
　final int width = getWidth();　// プレビューの幅<br />
　final int height = getHeight();  // プレビューの高さ<br />
　int[] rgb = new int[(width * height)];  // ARGB8888の画素の配列<br />
　try {<br />
　　Bitmap bmp = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);  //ARGB8888で空のビットマップ作成<br />
　　decodeYUV420SP(rgb, data, width, height);  // 変換<br />
　　bmp.setPixels(rgb, 0, width, 0, 0, width, height);  // 変換した画素からビットマップにセット </p>
<p>　　// ★<br />
　} catch (Exception e) {<br />
　　// エラー<br />
　}<br />
}</p>
<p>public static final void decodeYUV420SP(int[] rgb, byte[] yuv420sp, int width, int height) {<br />
　final int frameSize = width * height;<br />
　for (int j = 0, yp = 0; j < height; j++) {<br />
　　int uvp = frameSize + (j >> 1) * width, u = 0, v = 0;<br />
　　for (int i = 0; i < width; i++, yp++) {<br />
　　　int y = (0xff &#038; ((int) yuv420sp[yp])) - 16;<br />
　　　if (y < 0) y = 0;<br />
　　　if ((i &#038; 1) == 0) {<br />
　　　　v = (0xff &#038; yuv420sp[uvp++]) - 128;<br />
　　　　u = (0xff &#038; yuv420sp[uvp++]) - 128;<br />
　　　}<br />
　　　int y1192 = 1192 * y;<br />
　　　int r = (y1192 + 1634 * v);<br />
　　　int g = (y1192 - 833 * v - 400 * u);<br />
　　　int b = (y1192 + 2066 * u);<br />
　　　if (r < 0) r = 0; else if (r > 262143) r = 262143;<br />
　　　if (g < 0) g = 0; else if (g > 262143) g = 262143;<br />
　　　if (b < 0) b = 0; else if (b > 262143) b = 262143;<br />
　　　rgb[yp] = 0xff000000 | ((r < < 6) &#038; 0xff0000) | ((g >> 2) &#038; 0xff00) | ((b >> 10) &#038; 0xff);<br />
　　}<br />
　}<br />
}</p>
<hr />
しかし、この記事では、画像を実際に保存するところまでは踏み込んでいません。<br />
上の「★」の部分です。<br />
次回は、私なりに考えた、この保存部分の処理のサンプルをご紹介したいと思います。<br />
⇒<a href="http://android.roof-balcony.com/camera/camera-save/">Androidアプリのカメラ機能で撮影した画像の保存方法</a></p>

<p><a href="http://feedads.g.doubleclick.net/~a/pn8MINfImJDeAS2svBDi2yuhTag/0/da"><img src="http://feedads.g.doubleclick.net/~a/pn8MINfImJDeAS2svBDi2yuhTag/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/pn8MINfImJDeAS2svBDi2yuhTag/1/da"><img src="http://feedads.g.doubleclick.net/~a/pn8MINfImJDeAS2svBDi2yuhTag/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://android.roof-balcony.com/camera/preview-get/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Androidのカメラのシャッター音について</title>
		<link>http://android.roof-balcony.com/camera/shutter-sound/</link>
		<comments>http://android.roof-balcony.com/camera/shutter-sound/#comments</comments>
		<pubDate>Fri, 22 Oct 2010 07:45:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Camera関連]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Camera]]></category>
		<category><![CDATA[XPERIA]]></category>
		<category><![CDATA[アンドロイド]]></category>
		<category><![CDATA[カメラ]]></category>

		<guid isPermaLink="false">http://android.roof-balcony.com/?p=1195</guid>
		<description><![CDATA[Androidのカメラのシャッター音の制御方法は？ 今回は、Androidのカメラのシャッター音について、私なりに色々と調べた内容をご紹介します。 残念ですが、この記事にたどり着かれた多くの方が知りたいと思っている内容へ [...]]]></description>
			<content:encoded><![CDATA[<p class=qmark>Androidのカメラのシャッター音の制御方法は？</p>
<p>今回は、Androidのカメラのシャッター音について、私なりに色々と調べた内容をご紹介します。<br />
残念ですが、この記事にたどり着かれた多くの方が知りたいと思っている内容へは、踏み切れていないかもしれません…。</p>
<hr />
日本の携帯電話では、基本的に、カメラのシャッター音は強制的になるように作られています。<br />
盗撮防止ですね。<br />
法で定められているわけではないみたいなんですが、メーカーさんのご意向というか気配りによって、そのようになっているらしいです。<br />
今はどうかわかりませんが、アメリカの携帯電話だと、カメラのシャッター音は、OFF設定が存在していました。<br />
アメリカには、○○○○○みたいに、盗撮をする習慣がある人なんていないのかもしれませんね。(笑)</p>
<hr />
Androidのシャッター音のOFFに関して書かれたWeb上の記事は多いですが、ほとんどが、root権限でAndroid端末の設定をいじる、という内容でした。<br />
私は、自分で使う事はもとより、Android Marketにアップするためのアプリを作りたいので、root権限でどうのこうのという事には興味がありません。<br />
(ご自分のAndroid端末のシャッター音をいじりたいだけの方は、他のサイトをご覧くださいませ。)</p>
<hr />
Android Market上に、シャッター音がしないカメラアプリがあるという噂を見かけ、実際にダウンロードしてみました。<br />
「SilentCam」というアプリです。<br />
オートフォーカスのときに、気持ち程度ですが、小さく鈍い音が鳴る程度で、ホントにシャッター音がしませんでした。</p>
<p>私は、もっと色々細かい設定ができるシャッター音がしないカメラアプリを作ってやろうかと思って、カメラアプリの開発に取り掛かりました。</p>
<hr />
<script type="text/javascript"><!--
google_ad_client = "pub-5719089567134682";
/* 468x60, 作成済み 10/08/10 */
google_ad_slot = "9091475988";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<hr />
細かい処理については省略しますが、カメラの撮影は、基本的には以下のメソッドを使います。<br />
<strong>android.hardware.Camera.takePicture()</strong><br />
このメソッドは、3つ引数を指定します。<br />
一つ目はShutterCallbackで、シャッター時にコールバックされるメソッドを指定します。<br />
二つ目、三つ目はPictureCallbackで、生データ生成時、JPEGデータ生成時にコールバックされるメソッドを指定します。<br />
※厳密に言うと、メソッドではなくてインスタンスです。</p>
<p>APIリファレンスや、私が読んだ書籍によりますと、一つ目の引数であるShutterCallbackで、通常はシャッター音の鳴動処理を入れるそうです。<br />
という事は、この処理を実装して、敢えて何も鳴らさなければ、シャッター音は鳴らないだろう、と思って試しに実装して、Xperiaで動作させてみました。<br />
すると、「カシャリ」というシャッター音が、見事に鳴り響きました…。</p>
<p>じゃあ、今度はShutterCallbackを、ちゃんと音が鳴るように実装するとどうなるのか？<br />
同じ事をやっている方のサイトに書かれてましたが、その音と、元々の音と両方が鳴ったそうです。<br />
という事から、Xperia以外はわかりませんが、CameraクラスのtakePicture()は、コールされるとシャッター音が鳴るように作られていると推測します。</p>
<p>というわけでして、普通のやり方では、Androidのカメラのシャッター音の制御は不可能と言えるかと思います。<br />
APIリファレンスにも、シャッター音の制御が出来そうなパラメータもメソッドもありません。</p>
<hr />
じゃあ、既存のシャッター音無しのAndroidアプリは、どうやって作ったのか！？<br />
めちゃくちゃ気になりました。<br />
APIリファレンスには掲載されていない裏APIでもあるのか？？</p>
<p>「ToyCam」という別のアプリですが、おそらく開発者さんらしいWebサイトがありまして、そこに気になる記述が書かれていました。<br />
仕組みは、カメラのプレビュー画像を保存している、と。<br />
なるほど！そういう事か！<br />
いやぁ、すごい事を考えますよね。<br />
SilentCamも、きっと同じような実装なんだと思われます。</p>
<p>なんで動画は撮れないの？って思っていたんですが、そういう理由ならうなずけます。</p>
<hr />
というわけで、私もチャレンジしてみようかと思いました。<br />
しかし、どうも、一筋縄では行かないようです・・・。<br />
この処理については、なんとか頑張って実現させて、またご紹介できればいいなと思ってます。。。<br />
というわけでして、今回の記事は、皆さんの知りたいところまで説明出来てないかもしれません！！<br />
すみません！実現できたら、記事にしたいと思います。<br />
⇒<a href="http://android.roof-balcony.com/camera/preview-get/">Androidアプリのカメラのプレビュー画像の取得方法</a></p>

<p><a href="http://feedads.g.doubleclick.net/~a/k8GbzvOM_yZtPB1n1bIjQKoACUA/0/da"><img src="http://feedads.g.doubleclick.net/~a/k8GbzvOM_yZtPB1n1bIjQKoACUA/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/k8GbzvOM_yZtPB1n1bIjQKoACUA/1/da"><img src="http://feedads.g.doubleclick.net/~a/k8GbzvOM_yZtPB1n1bIjQKoACUA/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://android.roof-balcony.com/camera/shutter-sound/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>AndroidアプリのマニフェストXMLに記述するuses-featureについて</title>
		<link>http://android.roof-balcony.com/api-reference/uses-feature/</link>
		<comments>http://android.roof-balcony.com/api-reference/uses-feature/#comments</comments>
		<pubDate>Fri, 22 Oct 2010 06:10:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[APIリファレンス関連]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Manifest]]></category>
		<category><![CDATA[Permission]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[アンドロイド]]></category>
		<category><![CDATA[パーミッション]]></category>
		<category><![CDATA[マニフェスト]]></category>

		<guid isPermaLink="false">http://android.roof-balcony.com/?p=1188</guid>
		<description><![CDATA[AndroidアプリのマニフェストXMLに記述するuses-featureって何の意味があるの？ このAndroidサイトの更新は久しぶりです。 実務がちょっと忙しくて、Androidプログラミングから遠ざかってました。 [...]]]></description>
			<content:encoded><![CDATA[<p class=qmark>AndroidアプリのマニフェストXMLに記述するuses-featureって何の意味があるの？</p>
<p>このAndroidサイトの更新は久しぶりです。<br />
実務がちょっと忙しくて、Androidプログラミングから遠ざかってました。<br />
やっと時間が出来たので、Androidでカメラアプリを作ってみようかなと思って、ぼちぼち作り始めました。<br />
そんな中、何故か妙に引っ掛かった「uses-feature」というマニフェストに記述するタグについて、今日は記事を書きたいと思います。</p>
<hr />
Androidでカメラ機能を使うには、マニフェストのXMLファイルに、以下のようなパーミッションの宣言が必要です。</p>
<hr />
&lt;uses-permission android:name=&#8221;android.permission.CAMERA&#8221;&gt;<br />
&lt;/uses-permission&gt;</p>
<hr />
しかし、色んなサイトを拝見させて頂くと、以下のような記述も必要だ、と書いているところが多かったです。</p>
<hr />
&lt;uses-feature android:name=&#8221;android.hardware.camera&#8221; /&gt;<br />
&lt;uses-feature android:name=&#8221;android.hardware.camera.autofocus&#8221; /&gt;</p>
<hr />
<script type="text/javascript"><!--
google_ad_client = "pub-5719089567134682";
/* 468x60, 作成済み 10/08/10 */
google_ad_slot = "9091475988";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<hr />
この「uses-feature」って何だ？<br />
と、疑問に思われた方は他にいないでしょうか。</p>
<p>私はなぜかめちゃくちゃ気になりました。<br />
パーミッションは別途与えているのに、なんでこんな記述が必要なのか。</p>
<p>明確な理由がわからないのに、このuses-featureの記述を入れるのが何故だかシャクだったので、まずはこのuses-featureを与えずに、カメラ機能を実装して起動させてみました。</p>
<p>すると、、、問題なく動作しました。<br />
エミュレータでも、Xperiaでも。</p>
<p>うむむ、じゃぁこのuses-featureの記述は何の為のものだろう…。<br />
ますます気になりました。</p>
<p>Androidのドキュメントに載っているだろうか？と思い、探してみました。<br />
すると、、、それらしき記述がありました。</p>
<p>Android SDKのdocsフォルダの、以下のURLです。<br />
※インストール先によって、頭の部分が違うかもしれません。<br />
C:\android\android-sdk-windows\docs\guide\topics\manifest\uses-feature-element.html</p>
<p>部分的に抜粋ですが、要は、<br />
このAndroidアプリが使っている機能はコレだよと、宣言するという意味合いだそうです。<br />
例えば、カメラを非搭載のAndroid端末で、Android Marketで、この宣言を持ったAndroidアプリをダウンロードしようとした場合は、ダウンロードが許可されないそうです。</p>
<p>どのような挙動となるか細かいところまではわかりませんが、上記によりuses-featureは記述しておく方が、Androidアプリ開発者にとっても利用者にとってもいいと思います。</p>
<p>開発者にとっては、自分のAndroidアプリの品質を疑われないようになるというメリットがあるのではないでしょうか。</p>
<p>例えば、カメラのオートフォーカス機能を使ったAndroidアプリを、Androidマーケットにアップしていたとします。<br />
そして、カメラ機能は付いているけど、オートフォーカス非搭載のカメラを搭載したAndroid端末ユーザが、そのアプリをダウンロードしたとします。<br />
そして、そのユーザが、そのAndroidアプリを使って写真を撮影したら、どうなるでしょう。<br />
きっとおそらく、エラーになるでしょうね。<br />
すると、「なんだ、このカメラアプリは！写真撮れないじゃないか！！クソアプリだとコメントしてやろう。★も一つだ！」となるかもしれません。</p>
<p>しかし、uses-featureを記述しておくことで、このような不幸を避ける事が出来ます。<br />
よって、uses-featureは、Android開発者、利用者共に有益な記述であろうと思います。</p>
<hr />
実際に、どのような挙動になるのか、本当にダウンロードされないようになるのかまでは検証したわけではないのですが、記述しておいて損は無いと思いました。<br />
uses-featureは、必要に応じて記述するようにしましょう！</p>

<p><a href="http://feedads.g.doubleclick.net/~a/KHZ7-Jppjxy2BvTiPOBX9b0wjLg/0/da"><img src="http://feedads.g.doubleclick.net/~a/KHZ7-Jppjxy2BvTiPOBX9b0wjLg/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/KHZ7-Jppjxy2BvTiPOBX9b0wjLg/1/da"><img src="http://feedads.g.doubleclick.net/~a/KHZ7-Jppjxy2BvTiPOBX9b0wjLg/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://android.roof-balcony.com/api-reference/uses-feature/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>公開したAndroidアプリでMapViewが表示されないときの対処方法</title>
		<link>http://android.roof-balcony.com/view/mapview/mapview-disp/</link>
		<comments>http://android.roof-balcony.com/view/mapview/mapview-disp/#comments</comments>
		<pubDate>Thu, 16 Sep 2010 02:15:53 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[MapView関連]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Android Market]]></category>
		<category><![CDATA[Androidマーケット]]></category>
		<category><![CDATA[APK]]></category>
		<category><![CDATA[Emulator]]></category>
		<category><![CDATA[MapView]]></category>
		<category><![CDATA[XPERIA]]></category>
		<category><![CDATA[アンドロイド]]></category>
		<category><![CDATA[エミュレータ]]></category>

		<guid isPermaLink="false">http://android.roof-balcony.com/?p=1182</guid>
		<description><![CDATA[エミュレータでは正常にGoogle MapViewが表示されていたのに、公開したAndroidアプリをMarketからダウンロードして起動すると、MapViewが表示されない！？ Androidアプリでは、Google  [...]]]></description>
			<content:encoded><![CDATA[<p class=qmark>エミュレータでは正常にGoogle MapViewが表示されていたのに、公開したAndroidアプリをMarketからダウンロードして起動すると、MapViewが表示されない！？</p>
<p>Androidアプリでは、Google Mapを簡単に表示できるMapViewというViewがありますね。</p>
<p>私は、Android Marketに公開する前に、エミュレータで正常にMapViewが表示されていたので、そのままAndroid Marketに公開して数日が経過してから気付いたのですが、全くMapViewが表示されていない事に気付きました。<br />
そのときの解決策をご紹介したいと思います。</p>
<hr />
ちなみに、MapViewを使うには、以下のサイトでGoogle MapのAPIキーを取得する必要がある事は、ご存知の方も多いと思います。<br />
<a href="http://code.google.com/android/maps-api-signup.html" target="_blank">Google MapのAPIキーを取得</a></p>
<p>Androidアプリを開発中は、SDKが生成している証明書のフィンガープリントを使って、Google MapのAPIキーを取得したと思います。<br />
例えばWindows XPなら以下のファイルです。<br />
C:\Documents and Settings\ユーザフォルダ\.android\debug.keystore</p>
<p>この証明書はデバッグ用なんですね。<br />
Eclipseでのエミュレータ上では正常にMapViewが表示されても、そのAPIキーのままで公開用のapkファイルを生成してAndroid Marketに公開しても、実はMapViewが全く表示されません。</p>
<hr />
では、どうしたらいいのか。</p>
<p>Android Marketに公開するapkファイルを生成するときに、keystoreを作成しますよね。<br />
手順は以下の記事で紹介しています。<br />
<a href="http://android.roof-balcony.com/market/market/" target="_blank">AndroidアプリのAndroid Marketへの公開方法</a></p>
<p>上記の記事の「Androidアプリへ署名の付加」というところを見てください。<br />
この手順で作成したkeystoreに含まれているフィンガープリントを使って、APIキーを取得すればいいのです。<br />
もし、Androidアプリを公開した後、keystoreファイルを捨ててしまったんなら、もう一回作りなおしましょう。</p>
<p>コマンドプロンプトを立ち上げて、<br />
keytool -list -keystore < 作ったkeystoreのファイル名までのフルパス><br />
と入力します。</p>
<p>すると、パスワードを聞かれるので、証明書を作成したときに設定したパスワードを入力すればOKです。<br />
フィンガープリントが表示されますので、このフィンガープリントで、Google Map APIキーを取ってください。</p>
<p>もしパスワードを忘れてしまったら、、、またkeystoreを作り直しましょう。</p>
<hr />
<script type="text/javascript"><!--
google_ad_client = "pub-5719089567134682";
/* 468x60, 作成済み 10/08/10 */
google_ad_slot = "9091475988";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<hr />
次は、公開するAndroidアプリの、レイアウトXMLで設定しているMapViewのAPIキーの属性を、取得したAPIキーに置き換えます。</p>
<p>それでもう一度公開用のapkファイルを作り直します。(さっきも紹介しましたが、以下が手順です。)<br />
<a href="http://android.roof-balcony.com/market/market/" target="_blank">AndroidアプリのAndroid Marketへの公開方法</a><br />
しかし注意！！<br />
上記手順では、keystoreの新規作成を行っていますが、新規に作成するのではなく、フィンガープリントを出したkeystoreを指定してください。<br />
以下の画面で「Use existing keystore」を選択してください。<br />
<img src="http://android.roof-balcony.com/images/market/market3.JPG" alt="公開したAndroidアプリでMapViewが表示されないときの対処方法" /></p>
<p>こうしないと、APIキーを生成したときに使った証明書と、アプリに付けられた署名が違う事になり、MapViewが表示されません。</p>
<hr />
これでAndroidアプリをMarketにアップロードして、ダウンロードしなおしてみてください。<br />
正常にMapViewが表示されるはずです。<br />
(ちなみに、エミュレータでは表示されなくなると思います。)</p>

<p><a href="http://feedads.g.doubleclick.net/~a/Q53Joi6GTF8cBi7SU6RxuYpVIlA/0/da"><img src="http://feedads.g.doubleclick.net/~a/Q53Joi6GTF8cBi7SU6RxuYpVIlA/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/Q53Joi6GTF8cBi7SU6RxuYpVIlA/1/da"><img src="http://feedads.g.doubleclick.net/~a/Q53Joi6GTF8cBi7SU6RxuYpVIlA/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://android.roof-balcony.com/view/mapview/mapview-disp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Xperiaのエミュレータの設定方法</title>
		<link>http://android.roof-balcony.com/debug/add-on/</link>
		<comments>http://android.roof-balcony.com/debug/add-on/#comments</comments>
		<pubDate>Tue, 14 Sep 2010 07:28:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[XPERIA関連]]></category>
		<category><![CDATA[エミュレータ/デバッガ関連]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Emulator]]></category>
		<category><![CDATA[SDK]]></category>
		<category><![CDATA[XPERIA]]></category>
		<category><![CDATA[アンドロイド]]></category>
		<category><![CDATA[エミュレータ]]></category>

		<guid isPermaLink="false">http://android.roof-balcony.com/?p=1167</guid>
		<description><![CDATA[Xperiaのエミュレータってあるの？そして、設定方法は？ 今回は、Androidのエミュレータで、Android SDK標準のエミュレータではなく、Xperiaのエミュレータを動かす方法についてです。 Xperiaをお [...]]]></description>
			<content:encoded><![CDATA[<p class=qmark>Xperiaのエミュレータってあるの？そして、設定方法は？</p>
<p>今回は、Androidのエミュレータで、Android SDK標準のエミュレータではなく、Xperiaのエミュレータを動かす方法についてです。</p>
<p>Xperiaをお持ちでない方で、ご自分で作成されたAndroidアプリを、実際にXperiaで表示させると、どんな感じで画面表示されるのか、という点、非常に気になると思います。<br />
実際、Android SDK付属のエミュレータと、Xperiaでは、画面サイズが違うので、SDKのエミュレータではちゃんと表示されているのに、Xperiaでは思い描いてたような表示にならないとか、或いはその逆のパターンもあります。</p>
<p>また、実際にXperiaをお持ちでも、いちいちケーブル繋いで、アプリをインストールするのもメンドクサイですよね。<br />
アプリ完成間近ならまだしもですが。</p>
<p>というわけで、Android SDKに、Xperiaのエミュレータを導入する方法をご紹介します。</p>
<hr />
<p class=checked>XperiaのAdd-onをダウンロード</p>
<p>Sony Ericssonのディベロッパーサイトから、XperiaのAdd-onをダウンロードします。<br />
Add-onとは、エミュレータと思ってくれればいいです。<br />
<a href="http://developer.sonyericsson.com/wportal/devworld/technology/android/developer-tools" target="_blank">Sony Ericssonのディベロッパーサイト</a></p>
<p>このページの一番下の方に、ダウンロードリンクがあると思います。<br />
2つありますが、1つはマニュアルです。<br />
「Installation Guide」ではない方をダウンロードします。容量がデカイ方です。</p>
<p>リンクをクリックすると、次の画面の下の方で、「Reject」ボタンと「Accept」ボタンがありますので、「Accept」ボタンを押します。<br />
すると、ダウンロードが始まります。</p>
<p>ダウンロードしたzipファイルを解凍し、Android SDKのインストールフォルダにある「add-ons」フォルダに移動してください。</p>
<p class=checked>AVDの作成</p>
<p>「AVD」とは、Android Virtual Deviceの事です。<br />
要はエミュレータの事ですね。<br />
Eclipseを使って、以下のような手順で作成してください。</p>
<p>Eclipseの、Windows->Android SDK and AVD Managerを選択します。(下図参照)<br />
<img src="http://android.roof-balcony.com/images/add-on/add-on1.JPG" alt="Xperiaのエミュレータの設定方法" /></p>
<p>以下のような画面が開くので、赤で囲っているNewボタンを押します。<br />
<img src="http://android.roof-balcony.com/images/add-on/add-on2.JPG" alt="Xperiaのエミュレータの設定方法" width="100%"/></p>
<p>すると、今度は以下のような画面が表示されます。<br />
<img src="http://android.roof-balcony.com/images/add-on/add-on3.JPG" alt="Xperiaのエミュレータの設定方法"  /></p>
<p>「Name」は、わかりやすいような名前を付ければよいでしょう。<br />
「Target」は、「X10 (Sony Ericsson Mobile Communications)」というのを選択します。<br />
その他の項目はそのままでOKです。</p>
<p>そして、「Create AVD」ボタンをクリックします。<br />
そして次の画面でOKボタンを押せば、AVDの作成は完了です。</p>
<hr />
<script type="text/javascript"><!--
google_ad_client = "pub-5719089567134682";
/* 468x60, 作成済み 10/08/10 */
google_ad_slot = "9091475988";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<hr />
<p class=checked>作成したAVDを起動</p>
<p>それでは、作成したAVDを実際に使ってみます。<br />
手順はいくつかあろうかと思いますが、ここでは一例を。<br />
起動したいAndroidアプリケーションのプロジェクトを、右クリックして、「Run as」->「Run Configuration」を選択します。(下図参照)<br />
<img src="http://android.roof-balcony.com/images/add-on/add-on4.JPG" alt="Xperiaのエミュレータの設定方法"  width="100%"/></p>
<p>次の画面で「Target」というタブを選択します。<br />
以下のような画面です。<br />
<img src="http://android.roof-balcony.com/images/add-on/add-on5.JPG" alt="Xperiaのエミュレータの設定方法" width="100%" /></p>
<p>ラジオボタンで「Manual」を選択して、下のリストで、作成したAVDにチェックを入れて、一番下の「Run」ボタンを押せば起動します。</p>
<hr />
すると、以下のようなエミュレータが起動します。<br />
<img src="http://android.roof-balcony.com/images/add-on/add-on6.JPG" alt="Xperiaのエミュレータの設定方法" /></p>
<p>上の図は、縮小してます。<br />
私は、ちょっと画面の大きさにびっくりしてしまいましたが…。</p>
<p>個人的には、Androidアプリを公開する方は、Xperiaでなくていいと思いますが、実機は持っておいた方がいいかと思いますが、一応は、今回ご紹介した方法で、Xperiaの実機がなくとも、表示の確認ぐらいは行えるかと思います。</p>

<p><a href="http://feedads.g.doubleclick.net/~a/QTm3YNpaasHk11k0qX6TgF21G5U/0/da"><img src="http://feedads.g.doubleclick.net/~a/QTm3YNpaasHk11k0qX6TgF21G5U/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/QTm3YNpaasHk11k0qX6TgF21G5U/1/da"><img src="http://feedads.g.doubleclick.net/~a/QTm3YNpaasHk11k0qX6TgF21G5U/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://android.roof-balcony.com/debug/add-on/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AndroidアプリのAndroid Marketへの公開方法</title>
		<link>http://android.roof-balcony.com/market/market/</link>
		<comments>http://android.roof-balcony.com/market/market/#comments</comments>
		<pubDate>Tue, 07 Sep 2010 05:14:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Android Market関連]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Android Market]]></category>
		<category><![CDATA[Androidマーケット]]></category>
		<category><![CDATA[XPERIA]]></category>

		<guid isPermaLink="false">http://android.roof-balcony.com/?p=1151</guid>
		<description><![CDATA[自分で作ったAndroidアプリを、Android Marketへ登録、公開する方法は？ 自分で作ったAndroidアプリは、Android MarketというAndroidアプリのオフィシャルなダウンロードサイトへ登録 [...]]]></description>
			<content:encoded><![CDATA[<p class=qmark>自分で作ったAndroidアプリを、Android Marketへ登録、公開する方法は？</p>
<p>自分で作ったAndroidアプリは、Android MarketというAndroidアプリのオフィシャルなダウンロードサイトへ登録、公開する事が出来ます。<br />
既に、XPERIA等のAndroid端末をお持ちの方であれば、お世話になっているかと思います。</p>
<p>今回は、自分で作成したAndroidアプリを、実際にAndroid Marketへ公開する手順を説明していきます。</p>
<hr />
<p class=checked>Android Marketへのユーザー登録</p>
<p>Android MarketへAndroidアプリを公開する為には、Android Marketへユーザー登録(開発者登録)する必要があります。<br />
一応、登録の条件としては、以下のような感じです。<br />
・Googleアカウントを持っている<br />
・クレジットカードを持っている</p>
<p>Googleアカウントは、XPERIAをお持ちなら、おそらく既にお持ちでしょうし、もし持っていなくても無料で作成する事ができます。<br />
Googleアカウントの登録方法は、Googleのサイトででもご確認下さい。</p>
<p>Android Marketへの開発者登録自体は、残念ながら無料ではありません。<br />
25ドルの入会金ともいえる料金が発生します。<br />
今、この記事を書いている時点では、円高で1ドル84円ぐらいなんで、、、大体2100円ぐらいですかね。<br />
この料金は、クレジットカードで支払います。<br />
ですので、クレジットカードをお持ちでない方は残念ながら登録が出来ません。<br />
今は、キャッシュカードでもクレジットと一体となっているカードがほとんどですので、おそらくほとんどの方がお持ちであろうと思いますが…。</p>
<p>Android Marketへの登録は、下記のリンクより行けます。<br />
<a href="http://market.android.com/publish" target="_blank">Android Marketへの登録はこちら</a></p>
<p>登録する手順は、色んなサイトが取り上げていらっしゃいますので、ここでは説明しません。<br />
ちなみに、私は以下の記事を参考にしました。<br />
<a href="http://www.taosoftware.co.jp/android/market/market_start.html" target="_blank">Android Marketへの登録方法</a><br />
Android Marketの登録画面が、実際と若干違いましたが、この記事を書かれたときから、色々進化しているからだと思います。<br />
ちなみに、この記事では、携帯電話の番号には国番号が要らない、みたいな事が書かれてましたが、ホントなんでしょうか・・・。<br />
私は一応、国番号を付けて登録しておきました。<br />
どなたかご存知でしたら、コメントしてください！</p>
<hr />
<p class=checked>Androidアプリへ署名の付加</p>
<p>Android Marketへ登録したら、Android MarketへAndroidアプリを公開する事が可能になります。<br />
と、その前に、一つだけやらなければならない事があります。<br />
それが、Androidアプリに署名を付ける、という事です。<br />
私は、Eclipseを使って、以下の手順で行いました。</p>
<p>まずは、下図のように、署名を付けたいAndroidアプリのプロジェクトを選択し、右クリック->Android Tools->Export Signed Application Packageを選択します。<br />
<img src="http://android.roof-balcony.com/images/market/market1.JPG" alt="AndroidアプリのAndroid Marketへの公開方法" width="100%"/></p>
<p>すると、以下のような画面が表示されます。<br />
選択したAndroidプロジェクト名が表示されているはずですので、Nextをクリックします。<br />
<img src="http://android.roof-balcony.com/images/market/market2.JPG" alt="AndroidアプリのAndroid Marketへの公開方法" /></p>
<p>以下のような画面が表示されます。<br />
「Create new keystore」を選択し、keystoreの保存場所とパスワードを選択します。<br />
保存場所は、例えばですが、私は以下のようにしました。<br />
「C:\android\プロジェクト名」<br />
パスワードは適当です。<br />
そしてNextを押します。<br />
<img src="http://android.roof-balcony.com/images/market/market3.JPG" alt="AndroidアプリのAndroid Marketへの公開方法" /></p>
<p>次は以下のような画面が表示されます。<br />
私は以下のように入力しました。<br />
Alias：プロジェクト名<br />
パスワード：先ほどと同じパスワード<br />
Validity：25 (これは証明書の有効期限を年指定するので、20でも30でもいいと思います)<br />
First and Last Name：適当(自分のニックネームを入れました。)<br />
他の項目は任意のようなので、私は入れていません。<br />
そしてNextを押します。<br />
<img src="http://android.roof-balcony.com/images/market/market4.JPG" alt="AndroidアプリのAndroid Marketへの公開方法" /></p>
<p>最後に、以下のような画面が表示されますので、署名が付くapkファイルの出力先を指定するだけです。これは、既存のapkファイルがある場所を指定する必要はありません。もし存在しなければ、apkファイルを作ってくれます。<br />
<img src="http://android.roof-balcony.com/images/market/market5.JPG" alt="AndroidアプリのAndroid Marketへの公開方法" /></p>
<p>これで、Android Marketへ登録するAndroidアプリの実体のapkファイルは作成完了です。</p>
<hr />
<script type="text/javascript"><!--
google_ad_client = "pub-5719089567134682";
/* 468x60, 作成済み 10/08/10 */
google_ad_slot = "9091475988";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<hr />
<p class=checked>Android Marketへのアップロード</p>
<p>さて、いよいよAndroid Marketへアップロードします。<br />
Android Marketへログインしてください。<br />
すると、以下のような画面が表示されますので、「アプリケーションをアップロード」と書かれたところをクリックします。<br />
<img src="http://android.roof-balcony.com/images/market/market6.JPG" alt="AndroidアプリのAndroid Marketへの公開方法" width="100%"/></p>
<p>次の画面で、Androidアプリのアップロードや、情報の入力を行います。<br />
画面ショットは不要だと思うので、簡単に項目毎に説明します。</p>
<hr />
<strong>アセットのアップロード</strong><br />
アプリケーション(.apkファイル)：これは先ほど作成したapkファイルを指定して、アップロードをします。</p>
<p>スクリーンショット：Androidアプリのスクリーンショットを2枚までアップロードできます。任意ですが、スクリーンショットがある方が、ダウンロードしてもらいやすいんじゃないかなと個人的には思いますので、アップロードしておきましょう。Android SDK付属のddmsというツールで、簡単にスクリーンショットが取れます。</p>
<p>プロモーション画像：私はアップしませんでした。</p>
<p>Marketing Opt-Out：英語なのですが、おそらく、アップロードするAndroidアプリを、他で宣伝してくれるな！っていう設定だと思います。ジャンジャン宣伝してくれよって感じなんで、私はチェックを入れてません。</p>
<hr />
<strong>掲載情報</strong><br />
デフォルトでは英語モードになっていますので、日本語を追加したい場合は「言語を追加」というリンクをクリックして、「日本語」にチェックを入れてください。</p>
<p>タイトル：アプリ名を入力します。このアプリ名はAndroid Marketで表示されるアプリ名になります。</p>
<p>説明：Androidアプリの説明を書きます。この情報は、Android Marketのインストール前の画面で表示されますので、ちゃんとアプリの説明を書きましょう。</p>
<p>プロモーションテキスト：私は入力していません。</p>
<p>アプリケーションタイプ：アップロードするAndroidアプリが、「アプリケーション」か「ゲーム」かを指定します。ゲーム以外なら「アプリケーション」を指定します。</p>
<p>カテゴリ：アップロードするAndroidアプリのカテゴリを選択します。</p>
<hr />
<strong>公開設定のオプション</strong><br />
コピー防止：個人的にはONにしたかったんですが、英語でよくわからない事が書いてたので、OFFにしました…。</p>
<p>国/地域：特に問題なければ「すべての国/地域」でいいと思います。私は、作成したアプリは完全に日本人向けなんで、日本にだけチェックを入れました。</p>
<hr />
<strong>同意</strong><br />
2つのチェックボックスにチェックを入れます。<br />
特に変なアプリケーションでなければ、何も考えずにチェックを入れればよいと思いますが、気になる方はAndroidコンテンツガイドラインをご一読下さい。英語ですけど。</p>
<p>そして、最後に「公開」をクリックします。<br />
これで、あなたのAndroidアプリがめでたくAndroid Marketにて公開されたはずです！</p>
<hr />
最後に、もしXPERIAなどのAndroid対応端末をお持ちなら、実際にAndroid Marketにアクセスして見てください。<br />
私も、公開してすぐAndroid Marketで確認してみましたが、すぐに反映されていました。</p>
<p>初めてAndroid Marketにアップロードしたときは、なんかとっても嬉しかったです。<br />
結構、他のAndroidアプリでも辛口評価が多いので、私も辛口なコメントを頂くんだろうなと思いつつ、そういう意見は大事にしたいと思ってます。</p>

<p><a href="http://feedads.g.doubleclick.net/~a/n6GILqaui41IV-D0Kh7XQZjZ2D8/0/da"><img src="http://feedads.g.doubleclick.net/~a/n6GILqaui41IV-D0Kh7XQZjZ2D8/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/n6GILqaui41IV-D0Kh7XQZjZ2D8/1/da"><img src="http://feedads.g.doubleclick.net/~a/n6GILqaui41IV-D0Kh7XQZjZ2D8/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://android.roof-balcony.com/market/market/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

