hyoromoのブログ

最近はVRSNS向けに作ったものについて書いています

2010-01-01から1年間の記事一覧

GalaxyTab固有の問題と解決方法

海外のGalaxyTabで、現時点で見つけた問題と解決方法をまとめました。なお、国内向けに発売されるGalaxyTabでも同様の現象になるかは不明です。 Activityのウィンドウサイズが小さく表示される このように表示されるアプリがあるみたい。少し分かり難いです…

ProGuardを使っての難読化方法

ProGuardはJavaコードを最適化/難読化するためのツールです。apkのサイズが少なくなったり、apk解析された際に解析され難くなります。 今回は難読化のさせ方がよく分からなかったので整理しておきました。なお、ProGuardのバージョンは4.5を使用しています。…

リソースフォルダ名の設定方法

リソースフォルダ名って色々な条件を設定出来るけど、ついつい忘れがちです。例えば、hdpiでも解像度が800×480・854×480・960×640があっても、それら個別に画像やレイアウトを用意できちゃえます。 なお、以下の表にあるdrawableはlayoutやvalue等に置き換え…

NativeHeapSizeの調べ方

すぐOOMになる!もうVM落ちちゃったじゃない!て、人のタメにHeapSizeの調べ方を書いておく。ちなみにService系を作っているので基本LogCatに出したりSDcardに書き込む方法を好んで使ってます。長時間に渡って採取する必要が無ければ他の方法を取る方が分か…

AndroidMarketのアプリ詳細から「開く」で起動させるには

MainActivityのあるアプリならMain画面が起動されますが、そうではないService系アプリの場合はどうしたら良いのでしょう?一番よく取られるやり方はLauncher画面を一つ用意する事です。HelpをMainActivityにすればLauncher一覧に表示され、Marketからも開け…

Hello from JNI!

NDKやらにゃなーと思ってので試して見ることにしました。使用するのは Android NDK, r4 です。r3とr4ではNDKインストール手順が異なりますし、今後また変わるかもしれませんので注意してください。 今回は android-ndk/samples/hello-jni をコピペしながら実…

マナーモード状態の取得

マナーモードON/OFF時にBroadCastされるのでReceiveすればマナーモード状態を取得できます。 IntentFilter設定 Javaコード上で以下のように設定。 IntentFilter filter = new IntentFilter(); filter.addAction(AudioManager.RINGER_MODE_CHANGED_ACTION); r…

BitmapFactory.Options の使い方   の説明をちゃんとしたかったな...

画像読込時のOutOfMemory回避のお伴に BitmapFactory.Options が非常に有効です。本日はそんなAPIで何が設定出来るのか整理してみました。 設定一覧 inDensity bitmapのpixelを調整するらしいけど、どう使っていいかよく分からない。 inDither trueの場合、…

Android Pad対応方法

今までいくつかのPadを見てきましたが、今のところの共通点は以下のようになります。 Density Dpi が 160dpi(mdip)以下 解像度は480×800以上 この事から分かるように、dpiが低く解像度を高くすることで携帯端末よりも大きいディスプレイを快適に使うための工…

「ミクのライブ壁紙(MikuLiveWallpaper)」をリリースしました

アプリの紹介はこっそり始めてたオレオレなアプリまとめサイトに内容を記載しています。今回はLiveWallpaperアプリを開発するにあたり、詰まった点などを適当に書き残しておきます。俺の屍を超えてゆけ... Out Of Memory との闘い LiveWallpaperでパラパラア…

JN-DK01ベース端末のバッテリー情報について

素のAndroidの場合、内部で保持しているバッテリー情報は1%刻みで持っていますが。JN-DK01ベースの端末*1の場合は10%刻みで保持しているようです。 保持の仕方も、例えばバッテリー残量が80%から70%になった場合と60%から70%になった場合で、内部に保持され…

LiveWallpaper設定時のOutOfMemory発生原因

LiveWallpaperでプレビュー表示から設定したときにOutOfMemoryエラーが起こりやすい原因を調べてみました。 新規設定 LiveWallpaperをプレビューで表示 プレビュー上でLiveWallpaperアプリ起動 LiveWallpapserをHomeに設定 Home上でLiveWallpaperアプリ起動 …

ステータスバーの高さを求めて...

ステータスバーの高さって端末毎に違いますよね?低/中/高解像度毎に違うのは別に構わないのですが、Xperiaのように高解像度だけど他高解像度端末と異なるサイズなどあり、どうすりゃいいんだよ!と思ったけど、1つの解決策としてシステムアイコンのサイズを…

LiveWallpaperでスクリーンタッチしたら呼ばれるアレ

スクリーン上でタップしたときに呼ばれるonCommandメソッドの特性を整理しました。 取得できるイベント 2種類あります。 スクリーン上の何も無い場所をタップ スクリーン上でAppIcon移動 なお、AppWidget作成やショートカット作成ではコールされませんでした…

Bitmap, Drawableに変換

忘れがちなのでメモ Resource → Bitmap BitmapFactory.decodeResource(getResources(), R.drawable.icon) Resource → Drawable getResources().getDrawable(R.drawable.icon) Drawable → Bitmap ((BitmapDrawable) drawable).getBitmap() Bitmap → Drawable …

LogCatの見かた

Android開発し始めたばかりの人で、LogCatにどんな情報が流れてるか分からない。って人が多いので知ってる範囲で整理しました。 エラーの種類 タイプ Log出力方法 ログの意味 V Log.v(TAG, "VERBOSE") 簡易メッセージ D Log.d(TAG, "DEBUG") デバッグメッセ…

LiveWallpaperの核、Engineのライフサイクルを整理してみたよ

LiveWallpaperはWallpaperServiceを継承したメインクラスから、Engineを継承したLiveWallpaperの核となるクラスから構成されています。今回はそんな核なクラス、Engineのライフサイクルを整理しました。 LiveWallpaper設定時*1 onCreate onSurfaceCreated on…

なんでAppWidgetすぐ死んでしまうん?

Android端末に対して、一定以上の負荷を掛けると ActivityManager が悲鳴を上げて各Activity/Service が落ちる場合があります。もちろんAppWidgetも例外なく落とされるのですが、落とされたアプリをもう一度起動しようと ActivityManager は頑張ってくれます…

ショートカットのアプリ作成方法

"ホーム画面に追加" にある "ショートカット" にリストアップされる「ショートカットのアプリ作成方法」を簡単にまとめます。 AndroidManifest actionをショートカット特有のモノにすればショートカット一覧に並びます。 <activity android:name=".ShortcutActivity" > <intent-filter> <action android:name="android.intent.action.CREATE_SHORTCUT" /> </action></intent-filter></activity>

IS01 -AppWidgetに関して-

KDDIデザイニングスタジオでIS01端末の展示が行われていたので触ってきました。既にファーストインプレッション記事が多く上がっており、今更ですが主にAppWidget周りを見てきたので書いておきます。 Homeの特徴 解像度は960×480ですが、右側にメニューがあ…

SwitchWallpaperを1.2.0にバージョンアップしました

アイコンが汚いとさんざんクレームが入ったので、描き直しました。後はアイコンの色を7色の中から変更できるようにして、背景色も同様に変更できるようになってます。 久しぶりにブログ内で触れたので、アプリの説明をしておきます。 概要 このアプリは壁紙…

AndroidMarketへのアクセスURIについて

マーケットへアクセスする時のURIを整理してみました。PGから直接呼び出すときはもちろん、HP上にリンク貼ったりQRコード貼る時にも使えます。 AndroidMarketへのアクセスURI パッケージ名の完全一致検索(アプリ一覧の表示) market://search?q=pname: 開発者…

リソースの共有 〜ピクチャー共有したいんです〜

Androidでリソースを共有すると言えばコンテンツプロパイダがありますが、今回はsharedUserIdを使っての共有方法を整理しました。 今回やることの図解 概念 AndroidのベースとなっているのはLinuxカーネルです。Linux文化を継承した権限構成になっており、ap…

Androidでのピアプロキャラクター利用に際して

ピアプロのキャラクター*1をAndroidMarketで使用して良いか分からなかったので、権利元となるクリプトン・フューチャー・メディア株式会社さんに確認してみました。 無償非営利の場合 現在の所は、こちらの「非営利かつ無償の利用について」に準拠した規約に…

Droidくんのえかきうた

暇人A君と暇人B君が作りました。 歌詞 細長い、ビルの入りぐち二つあり。 その上に、おっきいビルがありました。 横に看板ふたつあり。 そんなビルに、半分お月さまが落ちてきて、落ちた拍子に丸二つ。 最後につのさしゃドロイド君。

Gadget1に参加しました

スタッフとして参加しましたが、メイン会場でマイク係してたのでプレゼン内容は聞けました。長く書くのはメンドウなので気になった点だけメモ。 ARお絵描きツール「Feel Sketch」 絵をPMcodeに変換。それをAndroid端末で読み取って、カメラ上に絵をオーバー…

コピープロテクトの問題について

AndroidではMarket登録時にコピープロテクトを掛けるかどうか設定できます。今回はこの設定をする事でどうなるかを整理します。 コピープロテクト OFF アプリをコピーできる ON アプリをコピーできない ユーザーがRootだとMarket上に表示されない表示される…

widgetを非表示にして詰める方法

やり方が分からなかったのですが、Twitterで方法を教えて貰いました。 やりたい事のイメージ ActivityがRunning状態で。左画像レイアウト状態のとき、動的に右画像レイアウト状態にする。 やりかた XML定義 TextViewとButtonを定義します。ここは普通。

ButtonらしくImageButtonを使ってみるよ

Buttonはまさに「ボタン」なAndroidのButtonですが、単純にImageButtonのBackgroundに絵を表示させても押されたか押されてないか分からない!フォーカス当たってるのかさえ分からないよ!src設定したらButton剥き出しだしって、どうしたらいいの!...と言う…

画面と壁紙の解像度を取得する方法

毎回ググってるので整理してみた。 取得方法 画面解像度 端末の各解像度に対応する際には必須となる。 WindowManager w = getWindowManager(); Display d = w.getDefaultDisplay(); int height = d.getHeight(); int width = d.getWidth(); 壁紙解像度 壁紙…