• 車種別
  • パーツ
  • 整備手帳
  • ブログ
  • みんカラ+

root220(^_-)-☆のブログ一覧

2011年12月31日 イイね!

Xperia 2.3.3にしちゃったら、文鎮化(起動不可能)~

家には開発用に

Galaxy S2
Galaxy S
Galaxy Nexus
HTC Desire
Xperia X10
IS-03
iPod Touch
が鎮座している。(オイオイ


とくにHTC DesireはSoftbankなDocomo携帯に改造していて、快適な電波を使わせ頂いてる。

やっぱり禿電波では使えないので、simフリーにしてdocomoの電波をつかうのがよろしい。

で、次の餌食はXperia!!


root化して、romを入れ替えてたら???

二度と起動しなくなった(泣

SonyEricsonのツールでも初期化不能!!(対策しやがって~


しょうがないので、とあるdocomo romを手に入れ初期化

Android 2.3.3に焼焼き


また失敗(泣


かれこれ10回(12時間)くらいは文鎮(起動しないXperia君のこと)を作ってしまった。

先人のブログを見てたら

xRecoveryでリブートしないで、電源ボタンを押す、
電池を抜いて数十秒放置

お~これか~

で・・・・・・・Xperia Android2.1は非公式2.3.3に!!


爆速仕様で快適快適(笑

Galaxy Nexusよりも使いやすいです~(マジで


ニトロなんて言う物凄いromもあります。

CPUのクロックアップでGalaxy s2LTE並み??

問題は内部ROMが500Mしかないので~


改造か??

電池蓋とると、基盤むき出しなので、もしかしたら可能かな~

楽しみ楽しみ






















Posted at 2011/12/31 00:34:09 | コメント(0) | トラックバック(0) | 日記
2011年12月31日 イイね!

Android で大画像ファイルを扱う+Xperia標準ギャラリーでサムネイルが表示されない場合の対策

Androidでプログラムを作ると機種依存になかされます。

特に!!標準ギャラリーの呼び出し

Galaxy,Nexus,Htcではokだけど、Xperiaではサムネイルが表示されない
Galaxy,ではokだけど、HTCでは落ちるとか

で、先人は考えた!!

// ギャラリー表示
Intent intent = null;
try
{
// for Hanycomb
intent = new Intent();
intent.setClassName("com.android.gallery3d", "com.android.gallery3d.app.Gallery");
startActivity(intent);
return;
}
catch(Exception e)
{
try
{
// for Recent device
intent = new Intent();
intent.setClassName("com.cooliris.media", "com.cooliris.media.Gallery");
startActivity(intent);
}
catch(ActivityNotFoundException e1)
{
try
{
// for Other device except HTC
intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("content://media/external/images/media"));
startActivity(intent);
}
catch (ActivityNotFoundException e2)
{
// for HTC
intent = new Intent();
intent.setClassName("com.htc.album", "com.htc.album.AlbumTabSwitchActivity");
startActivity(intent);
}
}
}

これだと、
Galaxy,Nexus,XperiaはいけるがHTC Desireが落ちる
さらに機種依存が強くて全世界の機種に対応できない

以下の方法であれば、Android2.2以上に限ってではあるが、完璧に標準ギャラリーを起動させ
サムネイルも表示し、ピックした画像のアドレス(uri)が返ってくる。

int REQUEST_PICK_CONTACT=1;//任意の数字
Intent intent = new Intent();
intent.setAction(Intent.ACTION_GET_CONTENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("image/*");
String choose_info=(String)getText(R.string.astro_caution);
Intent chooser = Intent.createChooser(intent,choose_info);
       //これを入れないとXperiaではサムネイルが表示されない
intent = new Intent(Intent.ACTION_PICK);
//以下はデコ美対策のため。デコ美で標準使用にチェックを入れると二度とギャラリーが使えなくなるための対策
Intent chooser2 = Intent.createChooser(intent,choose_info);
intent.setData(Uri.parse("content://media/external/images/media"));
startActivityForResult(chooser2,REQUEST_PICK_CONTACT);


次に大画像を扱う場合out of memoryに泣かされる
上記の方法で画像の居場所が返ってきて

camb=BitmapFactory.decodeFile(direct_path, bm_opt)を実行したとたん落ちる(泣

で、どうするかだが、以下の方法で完璧に読込が出来る。(ただし、機種によって上限サイズが違うため機種判別で上限サイズを制限する必要あり)


direct_path=file_path;

int Width = 0;
int Height = 0;
Matrix matrix = new Matrix();
float rate =0;

if (direct_path != null)
{
   try {
Bitmap temp_bitmap=null;
//これがないとOutOfMemoryErrorが出てきてどうしようもなかった
if(camb!=null)
{
camb.recycle();
camb=null;
}
if(bmp!=null)
{
bmp.recycle();
bmp=null;
}

bm_opt = new BitmapFactory.Options();
//ビットマップには実際には転送されないためサイズを得ることができる
bm_opt.inJustDecodeBounds = true;
bm_opt.inPurgeable=true;
BitmapFactory.decodeFile(direct_path, bm_opt);
camb_Width = (float)bm_opt.outWidth;
camb_Height = (float)bm_opt.outHeight;

int srcSize = Math.max(bm_opt.outWidth,bm_opt.outHeight);

long base_rate=0;
//機種によって1200以上だとメモリー不足で落ちるため1/2の画質にしちゃう
double base_size=1200;
if(srcSize>1200)
{
base_rate=Math.round((double)srcSize/base_size);
//これを入れないと、Galaxy以外の全機種は即死します。
//特に日本メーカは/撃沈必須
//Galaxyは標準以上なので優れてます。日本メーカーは見習ってね!!
bm_opt.inSampleSize=(int)base_rate;//2;//inSampleSizeが2なら1/2になる
}
else if(srcSize<=1200)
{
bm_opt.inSampleSize=1;
base_rate=1;
}
bm_opt.inJustDecodeBounds = false;//実際に読み込む
bm_opt.inPurgeable=true;
if(srcSize>1200)
{
long base_rate2=base_rate%2;
if(base_rate2!=0)
//inSampleSizeは偶数倍で処理されるため奇数は偶数に直す base_rate=base_rate-1;
//機種判別自作関数呼び出しで上限サイズから縮小率の計算
rate=calc_rate(ver)*(float)base_rate;//縮小比率を元に戻す。
}
else
rate=calc_rate(ver);//通常の縮小比率を計算する。

if(camb!=null)
       {
camb.recycle();
camb=null;
}
if(bmp!=null){
bmp.recycle();
bmp=null;
}


matrix.postScale(rate, rate);
camb=BitmapFactory.decodeFile(direct_path, bm_opt);

//縮小したサイズを取得する
Width = camb.getWidth();
Height = camb.getHeight();
camb = Bitmap.createBitmap(camb, 0,0, Width, Height, matrix, true);
bmp=BitmapFactory.decodeFile(direct_path, bm_opt);
bmp= Bitmap.createBitmap(bmp, 0,0, Width, Height, matrix, true);



Posted at 2011/12/31 00:13:22 | コメント(0) | トラックバック(0) | 日記
2011年12月24日 イイね!

FunCargo自爆

磐越自動車道で・・・・・

対向車線にいた、緑のFunカーゴが・・・・・

中央分離帯に激突してました・・・・・


おりしも、雪が降っていて、路面はアイスバーンに近い・・・・・


路肩に滑ったあとがあったので、路肩で全て、今度は右に行って・・・・


ドカーンでしょうね~


どうも、廃車っぽい壊れかた・・・・・

東北道の高速道路無料に伴って、高速慣れてないかたの、雪道事故多発の予感・・・・・


今日もRAオデが煽ってきて・・・・・・


こっちもフル加速・・・・・でも煽ってるし・・・・・・・


勘弁してくださいよ~


でもって、今度は左から軽トラが前に割り込み~


速度○○○KM・・・・・・・・「ギャー~」(余裕でしたが)


で、フルブレーキングしたら・・・・・


後ろのRA君、かなりビックリしたんでしょうね~ハンドル左に切ってフラフラしてるのを確認


オカマは勘弁です。真後ろについて煽るなんて、危険ですよ~


以後、RA君は50M以上車間間隔を守ってくれましたが・・・・





Posted at 2011/12/24 18:21:37 | コメント(0) | トラックバック(0) | 日記
2011年12月18日 イイね!

Galaxy Nexusって無音カメラ標準(音でないし??)

なぜか??カメラでシャッター押しても音が標準で出ません。


カメラアプリのソース弄っても、音出ないし???


なぜ????


HTC Desireもボリューム下げると音でません???


DoCoMoらしからぬ手落ち仕様ですか~(笑



で・・・・本題


スマホで音出ないカメラを作ろうとするとハマるのが、データ形式
そのままデータをbitmapに入れると、緑の線だらけの不思議な画像の出来上がり。


プレビュー画像をキャプチャーするので(かすめとる?)音が出ないっていえば当然


ま~画質が落ちるのはいかしかたないのですが・・・・・・・


ソースはこんな感じ

mCamera.setPreviewCallback(new PreviewCallback() {


@Override
public void onPreviewFrame(byte[] data, Camera camera) {

int width = 0;// プレビューの幅
int height =0; // プレビューの高さ
width =preview_size_w;//取得したプレビューの幅
height =preview_size_h;//size.height; // 取得したプレビューの高さ
if(bmp!=null)
{
bmp.recycle();
bmp=null;
}
if(data != null)//正しい値を返さない機種でエラーの対策
{
width =preview_size_w;// 取得したプレビューの幅
height =preview_size_h;

if(mTempData == null)
{
}
if(spybmp!=null)
{
   spybmp.recycle();
   spybmp=null;
}

if(bmp!=null)
{
bmp.recycle();
bmp=null;
}
spybmp =
Bitmap.createBitmap(decodeYUV(data, width, height),width,
height,Bitmap.Config.ARGB_8888);

float rate=0;
rate=0.5f;//ここは縮小レートですので適当~
Matrix matrix = new Matrix();
matrix.postScale(rate, rate);
float pw=(float)width;
float ph=(float)height;
bmp =Bitmap.createBitmap(spybmp, 0, 0, (int)pw, (int)ph, matrix, true);


みたいな感じに作ります!
で、ミソは
    decodeYUV(data, width, height)って感じの自作c++関数を呼び出します
   それと

width =preview_size_w;// 取得したプレビューの幅
height =preview_size_h;

   画面の幅と高さの取得にも癖があって、ここもハマります(笑
プレビューサイズと撮影サイズのアスペクトが一致してないと落ちますし、レイアウトのアスペクトが一致してないとこれまた強制終了します。
   機種依存が強いので(全世界600種類の携帯の依存性をクリアしなければなりませんが・・)通常の方法で取得した値は嘘八百なんてこともあったりして、緑の画面になったりもしますので、ここはノウハウでしょうね~上記の二つがクリアできれば、あとは簡単!!

それと・・・・
if(bmp!=null)
{
bmp.recycle();
bmp=null;
}
も大事。Androidはすぐにメモリーエラーで落ちるので自前で明示的にでっかい画像Bitmapを解放しなければなりません。

自作関数使うのはjavaでyuvデータをbitmapにでコードしてたら時間かかりすぎるのとOut of memory
通称OOMで簡単に落ちまくるための対策です(笑
だってBITMAPの配列つくるのにですよ!860X480X4(R/G/B/Alphaが4要素)の配列確保したとたんに落ちます!確実に!
あ~Javaって嫌い!!って感じになっちゃいます。

てなわけで、こんな嫌~な部分はc++で作っちゃいます。
以下のc++サンプルはネットにまったくありません。javaは沢山ありますが・・・(それも英語が多い)
本家で公開していたサンプルをc++にしてみました。

★jniで書き出す場合のデーコード部分のソースを出血大サービス~です。

JNIEXPORT int JNICALL Java_sample_yuv(JNIEnv *env, jobject obj,
jbyteArray yuvSrc,jintArray yuvDest, jint width, jint height,jint size)
{

jbyte *yuv420sp = (*env)->GetByteArrayElements( env, yuvSrc, 0 );
jint *out = (*env)->GetIntArrayElements( env, yuvDest, 0 );

int Y, Cr = 0, Cb = 0;
int i,i2;
int index=0;
int jDiv2=0;
int c0ff=0;



for(i = 0; i < height; i++)
{

index = i * width;

jDiv2 = i >> 1;

for(i2 = 0; i2 < width; i2++)
{

Y = yuv420sp[index];

if(Y < 0)
{

Y += 255;

}

if((i2 & 0x1) != 1)
{

c0ff = size + jDiv2 * width + (i2 >> 1) * 2;

Cb = yuv420sp[c0ff];

if(Cb < 0)
{

Cb += 127;

}

else
{

Cb -= 128;

}

Cr = yuv420sp[c0ff + 1];

if(Cr < 0)
{

Cr += 127;

}

else
{

Cr -= 128;

}

}



// red

int R = Y + Cr + (Cr >> 2) + (Cr >> 3) + (Cr >> 5);

if(R < 0)
{

R = 0;

}

else if (R > 255)
{

R = 255;

}



// green

int G = Y - (Cb >> 2) + (Cb >> 4) + (Cb >> 5) - (Cr >> 1) + (Cr >> 3) + (Cr >> 4) + (Cr >> 5);

if(G < 0)
{

G = 0;

}

else if (G > 255)
{

G = 255;

}



// blue

int B = Y + Cb + (Cb >> 1) + (Cb >> 2) + (Cb >> 6);

if(B < 0)
{

B = 0;

}

else if (B > 255)
{

B = 255;

}



out[index] = 0xff000000 + (B << 16) + (G << 8 ) + R;

index++;

}

}


(*env)->ReleaseByteArrayElements( env, yuvSrc, yuv420sp, 0 );
(*env)->ReleaseIntArrayElements( env, yuvDest, out, 0 );



}


てな関数をc++で作っておけば、あ~ら不思議、落ちません
でもね、Nexusは音しないので、いらないかも(笑


※悪用厳禁です。



Posted at 2011/12/18 22:07:46 | コメント(0) | トラックバック(0) | 日記
2011年12月18日 イイね!

Galaxy Nexusってデバイス名は”マグロ”って笑える

Galaxy Nexusってデバイス名は”マグロ”って笑える








論より証拠のキャプチャー画面です!!
上から2行目にmaguroって出てますね~
DoCoMoも、お茶目な名前つけることがあるんですね~(笑
※デバイスの名前は携帯キャリア会社が勝手に名前を付けることが出来ます。


Galaxy Nexusって画面表示が、かなりもたつきます・・・・

HTC Desireのほうが早いです???

計算処理はデュアルコアですのでGalaxy S2よりも最適化しているので爆速ですが・・・・・

表示が遅くては??ですね~
※解像度がGalaxy S2の2倍程度なのでしかたないのですかね??

位置づけが実験機ということなので、しかたないのですか??

ね!ドコモさん、ちょっと考えて下さい。


メールは使用出来ない、SDカードは使えない(クラウド使用前提のため)、表示遅い


微妙です。

アプリ作成時はこのへんのことを考えなくてはならないので難しい~

JAVAでちまちま画像を書き換えていてはカクカクになっちゃいます。


でC++で直接Bitmapを書き換えなくちゃ・・・・・・・

get_Bitmapで配列にデータを読み込んで、加工して、
set_Bitmapなんてやってたら、紙芝居になっちゃいますので




JNIEXPORT void JNICALL Java_Odyssey_Camera_Sample(JNIEnv * env, jobject obj, int direction,jobject bitmap)
{
AndroidBitmapInfo infogray;
void* pixelsgray;
int ret;
int y;
int x;
uint8_t save;


みたいなことをやって・・・・・

直接Android携帯の画像をc++で書き換えなくては、Nexusはいまいちになってしまいます。

じゃなきゃ大昔前のGalaxy S並みのスピードです。


これが標準になるのですかね~googleさんもちょっと考えたほうがよいのではないかと、アプリを修正してました(笑う


Posted at 2011/12/18 12:51:08 | コメント(0) | トラックバック(0) | 日記

プロフィール

「[整備] #クラウンハイブリッド 運転席イージーアクセスのアクティブ化について https://minkara.carview.co.jp/userid/552794/car/2584349/8261422/note.aspx
何シテル?   06/10 21:44
アイコンもなくUNNOWNな人や,ブログ・整備手帳も全くない不気味な方、女子と勘違いされてフォロー申請された方は 「絶対にフォローしません」 臭いで分かりま...
みんカラ新規会員登録

ユーザー内検索

<< 2011/12 >>

    123
4 567 8910
11121314151617
181920212223 24
252627282930 31

リンク・クリップ

KICKER L7TDF12 
カテゴリ:その他(カテゴリ未設定)
2025/05/10 11:45:11
MAXWINドラレコカメラ修理 
カテゴリ:その他(カテゴリ未設定)
2025/05/03 06:00:24
BSM取付 
カテゴリ:その他(カテゴリ未設定)
2025/02/08 01:18:22

愛車一覧

トヨタ クラウンハイブリッド ジャイ子2号 (トヨタ クラウンハイブリッド)
新型クラウンです 納車2018 7月初旬工場出荷 納車されました 車体は1000番の初期 ...
トヨタ プリウス トヨタ プリウス
クラウンが雪害で破損したための代車
ダイハツ タフト よっこら正一 (ダイハツ タフト)
買い物下駄に注文しちゃったぜ 大雪にはクラウンは、もったいないってことで
トヨタ ルーミー 下駄 (トヨタ ルーミー)
下駄です!あくまでも下駄(笑 Dのオネーたまの甘い誘惑に騙され、近所の買い物に発表1か月 ...

過去のブログ

2025年
01月02月03月04月05月06月
07月08月09月10月11月12月
2024年
01月02月03月04月05月06月
07月08月09月10月11月12月
2023年
01月02月03月04月05月06月
07月08月09月10月11月12月
2022年
01月02月03月04月05月06月
07月08月09月10月11月12月
2021年
01月02月03月04月05月06月
07月08月09月10月11月12月
2020年
01月02月03月04月05月06月
07月08月09月10月11月12月
2019年
01月02月03月04月05月06月
07月08月09月10月11月12月
2018年
01月02月03月04月05月06月
07月08月09月10月11月12月
2017年
01月02月03月04月05月06月
07月08月09月10月11月12月
2016年
01月02月03月04月05月06月
07月08月09月10月11月12月
2015年
01月02月03月04月05月06月
07月08月09月10月11月12月
2014年
01月02月03月04月05月06月
07月08月09月10月11月12月
2013年
01月02月03月04月05月06月
07月08月09月10月11月12月
2012年
01月02月03月04月05月06月
07月08月09月10月11月12月
2011年
01月02月03月04月05月06月
07月08月09月10月11月12月
2010年
01月02月03月04月05月06月
07月08月09月10月11月12月
2009年
01月02月03月04月05月06月
07月08月09月10月11月12月
ヘルプ利用規約サイトマップ
© LY Corporation