<   2012年 09月 ( 8 )   > この月の画像一覧

surfaceViewの不具合?

Androidでカメラアプリを作ったわけですが、原因不明のバグに襲われている。
これだけ先人がいるのに、同じ不具合がググっても出てこないのは、
私が、よほど、アホな作りをしているということか…?

というわけで、誰かヘルプ。
↓以下、その現象。

----
SurfaceViewを2枚重ねて表示している。
下層がカメラのプレビュー、上層をGUIの描画に使用している。
タッチの処理などは、上層で処理。

上層で、カメラのプレビューをOFFにできる機能をつけている。
異なるVIEWからの操作が色々と面倒なので、
上層で、プレビューOFFにされたら、Activityから、
下層のsurfaceView自体を、
setVisibiliry(View.INVISIBLE);
で不可視にしている。

上層⇒Activityもスレッドが異なるため、handlerを使用している。
可視/不可視を処理するメソッドが、これだ。
----

public void setCameraPreview(boolean f) {
if ( f ) {
sv2.setVisibility(SurfaceView.VISIBLE);
} else {
sv2.setVisibility(SurfaceView.INVISIBLE);
}
Log.d("APP LOG", "F:"+ f);
}

----

で、これが問題なく動作するのだ(おいおい
じゃあ何が問題なんだよ、と言うと、だな。

一度「バックキー」などで、アプリを終了させたあと、もう一度起動すると、
このプレビュー切り替えが動作しなくなるのだ。

注目すべきは、処理スレッドのログ。
きちんと、true,falseが表示されているのだ。
つまり、ココの処理までは来ているということだ。

初期プレビューは表示されているため、
再起動時のsurfaceView sv2の初期化に失敗しているというわけでもなさそうだ。
setVisibility()メソッドが、何らかの理由で反応しないのだ。

ホームキーやバックキーでアプリを終了した際、完全に終了するわけではなく、
プロセスは残っている。
このプロセスを殺してから、再起動すると、プレビューは正常に切り替えられる。

いわゆるサスペンド状態のときに、何か不具合を起こしているのだろう。
一日潰したが原因が分からないので、
面倒でパスしてた、異なるViewからの操作で、直接camera.stopPreview();を呼び出しをやってみるわ。
[PR]
by miries | 2012-09-28 12:05 | デジタル系

F-10Dのドット抜け

ドコモショップで、ドット抜けについて聞いてきた。

以下、ドコモショップによって対応が異なるかもしれないので、
違っても店員に詰め寄らないように。

発売日に購入したF-10Dにドット抜け(赤い点)が見つかったわけだが、
保障外のことが多いので、ダメもとで聞いてみたら、
補償対象内と言われました!

やったね。

確認が取れれば、本体の故障扱いで、修理か交換になるらしい。
でもね…。

ドコモショップの照明が明るすぎて、ドット抜けが確認できなかったの…orz
よし、そうと分かれば、今度はドット抜け確認用の壁紙を作って持っていくぞー。

ちなみに修理になると、バックアップとか色々面倒なので、
データが少ない、使い始めた今の方が良いだろう。
[PR]
by miries | 2012-09-27 14:01 | デジタル系

カメラ撮影とビュー

ようやく、カメラで撮影する機能を使ったアプリが動いた。

ちなみに今作っているゲームアプリには全く関係がなく、
単にAndroidの機能をテストしたかっただけ。

すでに先人が色々なテスト結果を記録・公開してくれているので、
割とすんなりできた方だろう。


というわけで、いくつか躓いたポイントを備忘録として書いておく。

○SurfaceHolderのタイプは、SURFACE_TYPE_PUSH_BUFFERSで無いとエラー。
 カメラのプレビューを表示するためには、この設定じゃないとダメなのだが、
 この設定はCanvasがリードオンリーになってしまう。
 なので、プレビューの上に何か描いたりすることができない。
 (この設定は、Android3.1で廃止になったらしいが…)

 これを回避する方法が少なくとも2つある。

○SURFACE_TYPE_NORMALを使う
 これで描くことができるようになるらしい。
 のだが、プレビューで取ってこれる画像データが、
 そのままでは使えないヘッダなしの生データらしく、
 使うためには変換をかまさないといけないとのこと。
 変換メソッドを公開してくれている人もいたけど、面倒なのでパス。

○SurfaceViewを重ねる
 一番下にカメラのプレビューを置き、その上に自由に描けるビューをおけばいいじゃん。
 ということで、2重ビュー方式を採用。
 「ビューを重ねることは、やってはいけないらしい」という記述も見かけたが、華麗にスルー。
 できるんだからいいジャン。

 が、ここでも、問題は発生。
 カメラのプレビューは決められたサイズを設定しないとエラーで落ちる。
 この決められてサイズに、端末の液晶サイズがあるとは限らないのだ。
 その場合、カメラのプレビューは、画面サイズに合わせるため、
 引き伸ばされたりして、実際の景色とは異なる画角になる。
 そこに画像を合成したら、プレビューとは異なる合成になってしまった。

 仕方が無いので、少し小さめのプレビューにして、余白は黒で塗りつぶし、
 プレビューと撮影の画角を合わせた。

 ここまでくれば出来たも同然なのだが、最後に1つ。
 上に重ねるビューは、背景が透明でないとダメなのだが、
 一度何か描くと、透明に戻らないのだ。
 合成する画像を切り替えていくと、画面にだんだんゴミが残っていくのだ。
 これも、先人の解説で解決。
 透過色で塗りつぶす際の、引数を省略せずに設定する必要があるそうだ。

 c.drawColor(0 ,android.graphics.PorterDuff.Mode.CLEAR );

 これで、透明色でクリアできた。
 完璧。
[PR]
by miries | 2012-09-27 12:16 | Android

バックアップはきちんとネ

約10年前にバックアップしておいたツールを引っ張り出してきた。

この頃から、開発に必要なツールは全てJavaで作るようにしていたので、
今でも動く。

他人が作ったツールも合わせて使用しているのだが、
そっちは、最新のWindowsでは動かなかった。
64bitに対応していないか、Windows7に合わないのだろう。

私のJava製は問題なく動く。動くことは動くのだが…。

ツールと変換前データをバックアップから拾ってきて、
変換を実行してみると、ぬるぽエラー。

おいおい、どうなってんだ?

フォルダ構成を見直して、状況を把握してみた。
どうやら、完成した一式を別のフォルダに保存しておき、
新たなる実験を始めたところで、バックアップをしたようだ。

オリジナル一式を発掘して実行すると、問題なく変換データが完成した。
当時変換したデータもそのまま残っていたので、
今回変換したデータとバイト単位で比較して、差異なし。

これでこの変換ツールをまた使用することができるわけだが、
変な保存方法するんじゃねーよ>過去の自分

もっとも、このツールがまた日の目を見ることになるとは、
全く思ってなかったがね。
[PR]
by miries | 2012-09-23 01:18 | デジタル系

リンクから来た皆様!

来ていただきありがとうございます!(^^)
こちらが、ラターシュのブログなのです。

サイトを全然更新してないので、
死んだと思われている方も居るんじゃないかと…(苦笑)

日々のことをテキトーに書くのは、やっぱりブログの方が楽なわけで。
自分のサイトの奴は自作なので、使いやすいように作ってはあるんですが、
機能的には専門サイトに勝てるわけも無く。

しかし、気づいたら3年以上も、こっちで書いているとは早いものだ。


こちらなら私も確認回数が多いし、
レスもつけられるということで、リンクを貼ってみました。

本サイトは、ブログに置けない作品の公開サイトという位置づけで、
今後も継続します。

今趣味のプログラムとしては、アンドロイドでアプリ作ってます。
Google Play通すと面倒だし、apk直ダウンロードとかやってみるかな…。

制作中のアプリは、完成するかどうかわかりませんが、
(完成するとしても、あと3ヶ月はかかる)
完成したら、本サイトは、その宣伝のために一新されるでしょう(笑)

というわけで、今後ともよろしく。
[PR]
by miries | 2012-09-20 03:55 | デジタル系

ゲームショウかあ。

行こうと思えば行けるのだが、今回は保留。

ゲームショウに限らず、最近はこの手(?)のイベントにはあまり行かないようになった。

雰囲気を楽しんだり、グッズをもらえたりする分には最高なのだが、
(特に、ゲーム専門学校の作品は面白い)
純粋に、モノが好きな身としては、全く面白くない。


各社、これから発売“予定”のものを宣伝するわけだが、
私は実物で遊びたいのであって、発売していただき、それで遊べればそれでいい。
というか、確実にだせ。

参考出展とか、期待だけのやつは死ね。


…2002年のおもちゃショーでバンダイから参考出展されたフェアリウム、
いまだに待っているんだが、いつ発売されるのかね?

同時に、腕時計から立体の女の子が表示されるアイテムの
コンセプト画像が参考出展されてたけど、そっちはどうかね。

2010年に参考出展されたオリンパスのARウォーカー。
モバイル向けの単眼HMDだが、いつ発売かね?
名前を変えて今年の6月に、株主向けに開発した!なんて発表してたけど。
御託はいいから、発売しろ。
Googleのやつより、はるかに期待してんだぞ>eye-trekユーザー


ゲーム系でいうなら、
ワンダースワンのFF3やプリンセスメーカーはいつ発売かね?
あと、xboxの TLFオンラインはどうかね>レベルファイブ


とまぁ、ゲームに限らず、参考出展の期待に裏切られた回数が多くてね。
行かなくなたわけですよ。
交通費もそれなりにかかるし、その分、3DSなどのDL販売買ったほうが楽しめるさ。
[PR]
by miries | 2012-09-20 03:25 | デジタル系

SH-03Cとroot

F-10Dを購入したため、アンドロイドアプリ開発専用機と化しているSH-03C、
通称LYNX。

去年の10月辺りに公開された最新のアップデートを適用すると、
root化できなくなった、という話題をどこかでみた。

アンドロイド端末で、よくroot化の話題がでるが、実は具体的にはよく知らない(笑)
root化すると、普段はセキュリティ上みることができない、
Google Playで購入したアプリのapkファイルを見れたり、
プリインストールされたアプリの削除を行えたりなど、色々できるようになるらしい。

この、プリインストールの削除、というのが非常に良い。
SH-03Cにプリインされている、pmailとかいうやつ、まったく使ってないのに
常時起動していて、なおかつ頻繁に「強制終了しました」とか出てむかつくのだ。

自分で開発しているアプリをプレイしているときに「強制終了しました」と出たので、
どこにバグがあるんだろう…と、よく見たら、pmailとか書いてるし。

そんな中、今日気づいたのだが、アンドロイドSDKに標準でついている、
DDMSツール。
これを使うと、実機の中にあるファイルを確認できるので、デバッグにしようするわけだが、
system/app
というフォルダに、.apkファイルが大量に入っているのをみつけた。

konami_golf.apk

おい、これプリインアプリのAPKファイルなんじゃ…。
自分で購入したアプリは、/data/data/~ に保存されるのだが、
そこは見れないようになっていた。

でも、プリインは見えるところに入っているのかよ。
とりあえず、PCに転送して、解凍できるところまでは確認した。

…削除してぇ…。
ここで削除しても大丈夫なのか?
消して幸せになれるのだろうか?
[PR]
by miries | 2012-09-20 01:48 | デジタル系

F-10Dのその後3

F-10Dを使う上で、必要なアプリについて。

某掲示板で、標準のSPモードメールよりはるかに良いということで、
CommuniCaseを入れた。

複数のアカウントを管理するなら確かに使いやすい。
今はドコモメールしか使ってないけど。

そして、On Air。
これは、PCから、WiFiを通じてスマフォのSDカード内のデータを取得するもの。
USBケーブルで接続する必要が無く、ワイアレスでデータをコピーできるのだ。

防水機能を維持するため、本体をできるだけ開閉せずに使っている身にはありがたい。
写真&動画、合計480MBの転送が数分で終わった。
速度も問題ないレベル。
これで無料だし、本当に評判通り、良いアプリだ。

ただし、F-10Dで使う場合の注意点。
コピーするのは良いが、本体側のデータの削除は行わないほうがいい。
実際に、PCから削除しても、ダミーデータが端末に残ったままになり、
結局アルバムから、1つずつ消す処理が必要になるからだ。

また、写真をすべて消去したら、
その後に撮影した写真のファイルネームの連番が、再び1から始まる。
これはコピーする上で、非常に面倒。

もしこうなってしまったら、とりあえず1枚撮影をしよう。
その写真のファイルネームを好きな番号へリネームすれば、
次の撮影は、その番号の続きからはじまるぞ。
[PR]
by miries | 2012-09-09 20:31 | デジタル系