2021.12.11

Essential Phone PH-1 のバッテリー交換

Essential Phone の battery を交換したのでメモ
(白と黒の2台交換したので写真は混ざってる)

■LCD 保護
ヒートガンの熱風から保護するように段ボールでカバーしてみた。 LCD の周りだけ 80度ぐらいに温めればいいはず。
IMG-4118

■LCD を外す
既に LCD を一度交換した後で軽くしか接着してないので、ヒートガンで温めると簡単に取れた 。
IMG-4109

■LCD の下のカバーを外す
ここを外すのは初めて。6ヶ所ネジを外すだけ。左側が爪でひかかってるので右側から上に上げる。
IMG-4110

■バッテリの両面テープを外す
引っ張ると伸びて剥がれる両面テープになっている。
これをゆっくり引っ張って、全部剥がす。急ぐと切れて剥がせなくなるのでめっちゃ注意。一番下の写真のように傷つけてバッテリ剥がすことになる。。
IMG-4121

■バッテリをとって入れ替え

IMG-4114

2台目は両面テープをうまく剥がせず、薄い鉄板を入れて強引に剝がしたので黒い導電シール?を剥がしてしまった。
IMG-4122 (1)

■あとは、組み立てて LCD を軽く接着するだけ

|

2016.07.02

sysbench をとってみた

Raspberry Pi 2, 3、BeagleBone Black、Intel Edison、DragonBoard 410c、HiKey LeMaker version の sysbench をとってみた。
(後者2枚は会社にあったのを使って、会社でデータとったので、ちょっとまずいかも?横領になるよな?まぁ、数分だけだし許してくれるだろう。)
(あと、ラズパイ1はどこにいったんだろう^^;)

HiKey の HiSilicon Kirin 620 が 8 core で圧倒的な速さだった。 これで $109 (先々週あたりは $99 だったはず)なのはコスパ的には最高だね。ラズパイ3の3倍もしない値段で全core使える処理なら30倍近い性能。ラズパイみたいにソースから kernel をビルドできるのか確認できてないけど、96Boards 的にはオープンプラットフォームを謳ってる訳だし、できるんだろうね。(Android なら Reference Board になってるからソースからビルドできる)

条件は揃ってないので、参考程度に。裏で動いてるプロセス殺してから、、とかやってない。普通に起動して、そのまま sysbench を 2 回かけて速い方を記録しただけ。

 

image

| | コメント (0) | トラックバック (0)

2015.12.23

ListView の Height は WRAP_CONTENT を避けるべき

もはや常識なのだろうけど、ListView の Height を WRAP_CONTENT にすると、
http://stackoverflow.com/questions/15232895/same-convertview-instance-is-passed-for-visible-views-in-cursoradapter
この問題が出てしまう。
自分は知らなかったのでメモ。

自分で ListView の Adapter を作る場合、Height を WRAP_CONTENT にすると、複数の position で同じ convertView で呼ばれてしまう。
直後に convertView = null で再度呼ばれるので、新たに view を作ることになり、通常は問題にならないが、画像とか時間かかるのを表示しようとすると、最初に呼ばれた時点で他の position と同じ converView の Pointer を 保持するように Thread を生成して画像取得しにいくので、画像取得後には保持した Pointer の先のを更新してしまい、他の position のを上書いてしまうことになる。 (tag に unique な ID を設定して上書きを避けてても最後に設定した unique ID は重なるので1つは上書いてしまう。)
(java では pointer とは言わないか。参照かな?)

昔から謎で、最初だけの問題なので wait 入れてごまかしていたが、Layout が確定するまでは同じ convertView が渡されてしまうのが仕様っぽいので、WRAP_CONTENT は避けるべき。

MATCH_PARENT なら違う position で同じ contentView で呼ばれることはなかった。

| | コメント (2) | トラックバック (0)

2015.12.18

Nexus 6 Android 6.0.1 (MMB29K) root化

昨日焼いた Android 6.0.1 を root 化してみた。
http://androiding.how/android-6-0-1-root/
ここの通り。

SuperSU v2.61 を落として、push
http://downloadmirror.co/android/KQ/SuperSU-v2.61.zip
ここから落として、
adb push SuperSU-v2.61.zip /sdcard/
で push

■TWRP を落として、起動、Super SU を焼く
https://dl.twrp.me/shamu/
ここから twrp-2.8.7.1-shamu.img を落として、
adb reboot bootloader
して、
fastboot boot twrp-2.8.7.1-shamu.img
で起動。
Install → SuperSU-v2.61.zip → Swipe to Confirm Flash を Swipe
して、リブート。

■root 取れたか確認
adb shell して、su しても、なぜか $ のまま。。
Super SU を起動すると、Play Store か TWRP に誘導されたので、Play Store に行って Update した。(TWRPは焼いてないので。というかさっき焼いた Super SU は古いのか??)
再度、Super SU を起動すると、SU バイナリのアップデートが必要です。と言われて、アップデートを試みたけど失敗。。
でも、adb shell して su すると、# になれたから、root 化はできたっぽい。
今テスト中のアプリの sqlite3 の DB も見れるようになってすごく助かった。
Super SU って素晴らしい!

| | コメント (4) | トラックバック (0)

2015.12.17

Nexus 6 Android 6.0.1 (MMB29K)

Nexus 6 に、Android 6.0.1 (MMB29K) を焼いてみた。
以下、MRA58K(root化したもの)から MMB29K にした手順(root化はこっち
一応、/sdcard/DCIM 以下と /sdcard/Download 以下をバックアップ取ったけど、特に問題はなかった。(encryption は有効な状態)

■Factory Image を落とす
https://developers.google.com/android/nexus/images
6.0.1 (MMB29K)

■全部展開して焼く
いつもどおり焼くだけ
fastboot flash bootloader bootloader-shamu-moto-apq8084-71.15.img
(MRA58Kと同じなので焼く必要ないと思う)
fastboot reboot-bootloader
fastboot flash radio radio-shamu-d4.01-9625-05.32+fsg-9625-02.109.img
fastboot reboot-bootloader
cd image-shamu-mmb29k
fastboot flash recovery recovery.img
fastboot flash boot boot.img
fastboot flash system system.img
fastboot reboot

■動確
電源ボタン2回押しでカメラが起動するようになった。結構便利^^

| | コメント (0) | トラックバック (0)

2015.10.10

Nexus 6 Android 6.0 root化

Android 6.0 (Marshmallow) では、今までどおり SuperSU を焼くだけではうまくいかず、起動できなくなってしまった。
ぐぐると、kernel も焼きかえる必要があるとのことだったのでメモ。
以下、Google Play 版の Nexus 6 で確認した。1つ前の FOTA はあてずに、2つ前の Factory Image を焼いて root 化した状態から↓をやった。user data は消えずにアップデートできたけど、バックアップはしておくべきだと思う。

■Factory Image を落とす
https://developers.google.com/android/nexus/images
6.0.0 (MRA58K)

■全部展開して焼く
いつもどおり焼くだけ
fastboot flash bootloader bootloader-shamu-moto-apq8084-71.15.img
fastboot reboot-bootloader
fastboot flash radio radio-shamu-d4.01-9625-05.27+fsg-9625-02.104.img
fastboot reboot-bootloader
fastboot flash recovery recovery.img
fastboot flash boot boot.img
fastboot flash system system.img
fastboot reboot

■kernel を落とす
http://forum.xda-developers.com/nexus-6/development/kernel-stock-kernel-root-color-control-t3218958
これを使わせてもらった。
With encryption (stock) の zip 版を落とす。
kernel-shamu-mra58k-color-root-v2.zip
SuperSU の前に焼く必要あり

hells-Core kernel とかの方がいいかも?

■SuperSU を落とす
http://download.chainfire.eu/740/SuperSU/BETA-SuperSU-v2.49.zip
これより古いのはダメっぽい

2.50 beta も出てるね
https://www.apkmirror.com/apk/chainfire/supersu/supersu-2-50-beta-android-6-0-marshmallow-support-read-notes-android-apk-download/

■TWRP を起動
http://teamw.in/project/twrp2/270/
ここの Download Links: から twrp-2.8.7.1-shamu.img を落とす
fastboot boot twrp-2.8.7.1-shamu.img
で起動する。

fastboot flash recovery twrp-2.8.7.1-shamu.img
で焼いてしまってもいいかもしれない。

■kernel を焼いてから、SuperSU を焼く
kernel-shamu-mra58k-color-root-v2.zip を焼いてから
BETA-SuperSU-v2.49.zip を焼く
順番があってればいいはず。途中でリブートする必要なし。

| | コメント (0) | トラックバック (0)

2014.05.14

モバイルバッテリー

cheero Power Plus 10400mAh DANBOAR Version を買ってみた。
かわいい。おすすめ!

ただ、デザイン分、ちょっと高い気がする。

ANKER Astro M3 モバイルバッテリー 13000mAh の方が、容量多いし、性能(DCDCの効率)も良いみたいだし、充電速度も速そうだし、かつ5V2AのACアダプタも付いてて、コスパ的には最高っぽい。


最近、首都圏で地震が多い気がするし、モバイルバッテリーを持っておいた方がいいと思う。
リチウムイオン二次電池は、残量50%ぐらいで保管するのが劣化が少ないので、地震時に備えるとなると、少しでも容量の大きいのを買って 50% にして置いておくのがよさげ。
ぐぐれば大量に出てくるけど、
http://www.oak-ele.com/column/index5.html
http://gumby0013.blog.so-net.ne.jp/2012-12-15
ここらへんに書かれてる。
自己放電もあるので、定期的に 50% ぐらいになってることの確認は必要。

| | コメント (0) | トラックバック (1)

2013.12.07

Gmail Public Labels API は selection が使えない

The Gmail Public Labels API は、ただの ContentProvider なんだけど、query() するときに第3引数の selection が使えないので注意!

この API を使ってる他のソースをぐぐってみると、Google が作ってるソースが見つかって、(このリンクはいつまで使えるのだろうか?)

    private Cursor openLabelsCursor(String account) {
try {
return getContentResolver().query(
GmailContract.Labels.getLabelsUri(account),
LabelsQuery.PROJECTION,
null, // NOTE: the Labels API doesn't allow selections here
null,
null);
} catch (SQLException e) {
// From developer console: "SQLiteException: no such table: labels"
LOGE(TAG, "Error opening Gmail labels", e);
return null;
}
}

と、"NOTE: the Labels API doesn't allow selections here" と書かれてるのでした。

当然、第4引数の selectionArgs を使って指定してみても使えない。

普通に ContentProvider として公開するなら、selection まで実装してくれよ。30分ぐらいハマったよ。。

| | コメント (0) | トラックバック (0)

2013.12.01

ListView に自作の Adapter を使うときの注意点?

だだのメモ。
いまいちよくわからん動作なのでメモ。

BaseAdapter を継承した Adapter を、ListView#setAdapter() して使っている場合、BaseAdapter#notifyDataSetChanged() を呼ぶと、getView(0, null, xxx) が呼ばれるみたいだ。
ListView 側の ListView#invalidateViews() を呼んでも、同様に呼ばれる。
ListView#invalidate() では呼ばれない。

通常は画面サイズ分の十分な数の View を作ったら、もう新しい View を作る必要はないのだが、BaseAdapter#notifyDataSetChanged() or ListView#invalidateViews() を呼んだ時は position=500 とかを表示してる場合でも、position=0 が呼ばれてから、position=500, 501, 502, .. が呼ばれる。

で、position=500, 501, 502, ...  は以前に作った空いた View が渡されるので、更新すればいいだけなんだけど、position = 0 のは  convertView = null で呼ばれる。
ので、新しい View を作る必要があって、、でも、新しい View を作っても 500 行目を表示してたら使われない。
直後に 0 行目までジャンプしても、position = 0 で convertView = 過去に作った空いたやつ、の方の事が使われてたりして、表示がおかしくなる。。

というのでハマった。

なんか間違ってる??

| | コメント (0) | トラックバック (0)

2013.08.28

BeagleBone Black に Android を入れた

例によって micro SD に入れただけだが。

http://processors.wiki.ti.com/index.php/TI-Android-JB-4.2.2-DevKit-4.1.1_DeveloperGuide
ここの通り。

■ソースの取得。
妙に遅かったから apt-get update & upgrade した。
ら、速くなった。git の version に依るのだろうか?たまたまか?
fatal: early EOF が結構出てたのがなくなった。

mkdir -p work/BBB/android
cd work/BBB/android
repo init -u git://gitorious.org/rowboat/manifest.git -m TI-Android-JB-4.2.2-DevKit-4.1.1.xml
repo sync -j8

sudo apt-get update
sudo apt-get upgrade
repo sync -j8

■u-boot の build

export PATH=~/work/BBB/android/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin:$PATH
cd ~/work/BBB/android/u-boot
make CROSS_COMPILE=arm-eabi- distclean
make CROSS_COMPILE=arm-eabi- am335x_evm_config
make CROSS_COMPILE=arm-eabi- -j4

■kernel の build

cd ~/work/BBB/android/kernel
make ARCH=arm CROSS_COMPILE=arm-eabi- distclean
make ARCH=arm CROSS_COMPILE=arm-eabi- am335x_evm_android_defconfig
make ARCH=arm CROSS_COMPILE=arm-eabi- uImage -j4

■Android の build

cd ~/work/BBB/android
make TARGET_PRODUCT=beagleboneblack OMAPES=4.x -j4
make TARGET_PRODUCT=beagleboneblack fs_tarball
make TARGET_PRODUCT=beagleboneblack OMAPES=4.x -j4 sdcard_build

sdcard_build を付けて make すれば、u-boot も kernel も全部 build してくれるように書かれてるけど、してくれなかった。ので、u-boot, kernel を build してから、sdcard_build を外して make、fs_tarball を付けて make した後に、sdcard_build を付けて make した。

■micro SD に入れる

cd out/target/product/beagleboneblack/beagleboneblack
sudo LANG=C ./mkmmc-android.sh /dev/sdX

例によって、/dev/sdX は環境に依る。
micro SD が Windows で使ってたものだとうまくいかず、一旦、sudo fdisk /dev/sdX して、d で全部消して w で消した状態のを書き込んでから mkmmc-android.sh を実行する必要があった。script 的に fdisk -l /dev/sdX を実行した結果を grep DISK してて、Windows で使っていたものだと DISK になるところが FAT32 とかになってしまって見つからないみたい。
途中で出る
cp: cannot stat `START_HERE': No such file or directory
というエラーは気にしなくていいはず。START_HERE を指定しておくと、そこからもコピーしてくれるっぽい。

追記:ソースから作れるのはすごい安心感があるけど、ちょっと設定変えると System UI が死ぬのを繰り返すから、Ubuntu の方がいいかも。デフォルトの live wallpaper をただの画像に変えただけで、System UI が死ぬのを繰り返すようになってしまう。。
最初の repo init の時に rowboat-jb.xml を指定すれば最新のを取得できると書かれてるので、後で試してみるか。

さらに追記:rowboat-jb.xml なんてなかった。。 web の説明は古いね。。  ls .repo/manifests で manifest のリストが見れるので、確認して、rowboat-jb-am335x.xml を指定すればうまくいった。けど、こっちのが古いかも??

| | コメント (5) | トラックバック (0)

より以前の記事一覧