Galaxy シリーズを中心としたAndroidのカスタマイズの覚書です。
現在のメイン機種はGalaxy Note 9(グローバル版)。
10年目を迎え、古い投稿を整理・改訂しました。
カスタマイズのまとめ(リンク集)はこちらです。

2013/11/14

Nexus 7 (2012, WiFiモデル)のAndroid 4.4へのアップデイトとroot化


Nexus 7 (2012、WiFiモデル、root化済)をAndroid 4.4にアップデイトして再root化しました。

【Android 4.4へのアップデイト】

OTAがまだ降って来ないので、unrootしてから、下記からダウンロードしたファイルをCWM Recoveryで焼きました。

Googleサーバー(OTA用、直リンク)
http://android.clients.google.com/packages/ota/google_nakasi/13088e35942c77e4752aa1fdf51d54472509b941.signed-nakasi-KRT16O-from-JWR66Y.13088e35.zip


【CWM Recoveryの再導入とroot化

OSのアップデイト後に、以下の手順でRecoveryを最新のCWMに置き換え、SuperSUを導入してroot化しました。

1)下記2つのファイルをダウンロードする。

CWM Recovery Download Touch Recovery Google Nexus 7 
http://www.clockworkmod.com/rommanager
recovery-clockwork-touch-6.0.4.3-grouper.img

ChainFire SuperSU
http://download.chainfire.eu/365/SuperSU/UPDATE-SuperSU-v1.69.zip
UPDATE-SuperSU-v1.69.zip

2)"UPDATE-SuperSU-v1.69.zip"を端末の"/sdcard/"直下に置く。

3)ダウンロードした"recovery-clockwork-touch-6.0.4.3-grouper.img"をPCの"/android-sdk-windows/platform-tools/"に置く。(SDKの環境に依ります。)

4)端末の電源を切り、"[電源]+[ボリュームダウン]"でbootloaderを立ち上げる。

5)端末とPCをUSBケーブルで接続し、PCのコマンドプロンプト上から以下の操作をしてCWM Recoveryを焼く。

fastboot flash recovery recovery-clockwork-touch-6.0.4.3-grouper.img

6)ボリュームキーを操作して"Recovery Mode"に入り、ナビゲーション画面で以下の操作をしてSuperSUを焼く。

・"Recovery"を選択。
・"Install zip from sdcard"を選択。
・"choose zip from sdcard"を選択。
・"0/"を選択。
・画面をスクロールして"UPDATE-SuperSU-v1.69.zip"を選択。
・"Yes - Install UPDATE-SuperSU-v1.69.zip"を選択。
・"+++++Go Bacck+++++"を選択。
・”reboot system now”を選択。
・"No"を選択。

7)再起動後にBusy boxをインストールする。

BusyBox
https://play.google.com/store/apps/details?id=stericson.busybox


2013/11/06

バッテリー消費計測(Galaxy S4 LTE-A、Android 4.3)



韓国版のGalaxy S4 LTE-A(shv-e330s、SKテレコム版)のOSをAndroid4.3(MJ7)にアップデイトしましたので、バッテリー消費を再計測してみました。

従来同様、どなたでも計測して比較出来るように、特別なアプリ等は使わず、寝る前に充電してから充電器を抜き、翌日に初めて使う際に確認したバッテリ残量(%)を記載しています。

【環境・条件】

従来同様の以下の条件で計測しています。

追加インストールしたアプリ
https://galaxy-shw-m110s.blogspot.com/2010/11/blog-post_67.html

Androidのバッテリー消費を抑制する設定まとめ
http://galaxy-shw-m110s.blogspot.kr/2013/10/android.html

root化はしていますが、バッテリ監視アプリやタスクキラーは使わず、OS側の設定と各アプリの同期・通知設定を細かく設定した状態で計測しています。

但し、今回から、Greenifyを導入しています。

常にバックグラウンドで起動してバッテリーを消費しているアプリをGreenifyで休止
http://galaxy-shw-m110s.blogspot.kr/2013/11/greenify.html

【今回の計測結果】

測定時間 測定開始時 測定終了時 1時間あたり
07:21 100% 97% 0.408%
09:28 100% 96% 0.423%
08:03 100% 97% 0.373%
07:32 100% 96% 0.531%
07:52 100% 96% 0.508%
平均 0.449%

【過去の計測結果との比較】

機種 OS 備考 結果
Galaxy S4 LTE-A 4.3 LTE,MJ7 0.449%/Hour
Galaxy S4 LTE-A 4.2.2 LTE,MH2 0.599%/Hour
Galaxy S4 4.2.2 LTE,ME7 0.743%/Hour
Galaxy S4 4.2.2 LTE,MDK 0.867%/Hour
Galaxy S3 4.1.2 LTE 1.759%/Hour
Galaxy S3 4.1.1 LTE Off 1.634%/Hour
Galaxy S3 4.1.1 LTE 2.434%/Hour
Galaxy S3 4.0.4 LTE 1.184%/Hour
Galaxy S2 4.0.3 3G,拡張バッテリ 0.768%/Hour
Galaxy S2 2.3.3 3G,拡張バッテリ 0.385%/Hour
Galaxy S2 2.3.3 3G 0.629%/Hour
Galaxy S 2.3.3 3G 0.502%/Hour
Galaxy S 2.2.1 3G 0.635%/Hour



2013/11/05

Galaxy S4 LTE-Aのカメラの無音化(deodex版、odex版)


韓国版のGalaxy S4 LTE-A(shv-e330s、SKテレコム版)の無音カメラアプリ(deodex版)とodexファイルの作成方法の覚書です。

カメラアプリの設定メニューにシャッター音のOn/Offオプションを追加します。

韓国版のGalaxy S4 LTE-Aのカメラはbild.propとfeature.xmlを編集しただけでは無音になりません。(カメラアプリの設定メニューにシャッター音のOn/Offオプションは表示されますが、Offを選択出来ません。)

Galaxy S4のカメラアプリの設定メニューにシャッター音のOn/Off項目を追加(韓国版では機能せず)
http://galaxy-shw-m110s.blogspot.kr/2013/07/galaxy-s4ooff.html

On/Offせずに、常に無音でよいのでしたら、アプリを解凍して音源ファイルを無音ファイルに差し替える方法で無音化出来ます。

Galaxy S4のカメラの無音化(ESファイルエクスプローラー使用)
http://galaxy-shw-m110s.blogspot.kr/2013/05/galaxy-s4_2.html

【全体の流れ】

・必要なファイルの準備
・odexファイルを展開・編集
・classes.dexを作成
・deodexファイルを作成
・odexファイルを作成(オプション)

【準備】

まず、必要な物を用意します。

JAVAはインストールされている前提です。

Java SE ダウンロード
http://www.oracle.com/technetwork/jp/java/javase/downloads/index.html

1)作業用フォルダ

任意のフォルダで構いませんが、今回は/desktop/deodex/というフォルダを作業用に用意しました。

2)アセンブラと逆アセンブラ

An assembler/disassembler for Android's dex format
https://code.google.com/p/smali/

上記のページから以下のファイルをダウンロードして作業用フォルダに保存します。

baksmali
smali
baksmali-2.0.jar
smali-2.0.jar

baksmali-2.0.jarとsmali-2.0.jarはbaksmali.jarとsmali.jarにリネームしておきます。

3)7Z

以下から7Zをダウンロードして、解凍し、作業用フォルダに置きます。

7z002.lzh
http://madobe.net/archiver/app/dosp/7z.html

4)カメラアプリとodexファイル

端末から以下の2つのファイルを抜き出して作業用フォルダ内に置きます。

PCの任意のフォルダにもバックアップとしても保存しておくことをお勧めします。

/system/app/SamsungCamera2.apk
/sustem/app/SamsungCamera2.odex

これらのファイルは、SDKを使ってPCにpullしてもよいのですが、ESファイルエクスプローラ等でコピーして端末の/sdcard/に置き、そこからケーブルやクラウドを介してPCにコピーしてもよいでしょう。

5)/system/framework/の中身

端末の/system/framework/の中身全てを作業用フォルダにコピーします。

それぞれのファイルのサイズは小さく、全体で90MB程しかありませんが、当方の環境では154個のファイルがありました。

ファイル数が多いので、今回は、作業用フォルダの中に/system/framework/というフォルダを作り、その中に入れました。

6)feature.xmlの編集

ESファイルエクスプローラー等を利用して、端末の下記のファイルを編集しておきます。

/system/csc/feature.xml

ESファイルエクスプローラー
https://www.do.global/zh_CN/product/

変更する箇所は以下です。

FeatureSet/CSCFeature/Camera_ShutterSoundMenu ; false => true

【deodexファイルの作成】

1)odexファイルの展開

コマンドプロンプトから作業用フォルダに入り、以下を実行します。

PCのエクスプローラで作業用フォルダを開き、Shift+右クリックから「コマンドウインドウをここで開く」を選択するとよいでしょう。

java -jar baksmali.jar -d system/framework -x SamsungCamera2.odex -o test

作業用フォルダ内の/test/にファイルが展開されますので、コマンドプロンプトは開いたままにして、次の作業に移ります。

2)設定ファイルの編集

以下のファイルをメモ帳等にドラッグして開きます。

/test/com/sec/android/app/camera/CameraSettings.smali

下記を検索し、その部分を添付内容に置き換えます。

.method public getCameraShutterSound()I

 

.method public getCameraShutterSound()I
    .registers 4

    .prologue
    iget-object v0, p0, Lcom/sec/android/app/camera/CameraSettings;->mActivityContext:Lcom/sec/android/app/camera/Camera;

    invoke-virtual {v0}, Lcom/sec/android/app/camera/Camera;->isCalling()Z

    move-result v0

    if-eqz v0, :cond_a

    const/4 v0, 0x0

    :goto_9
    return v0

    :cond_a
    invoke-virtual {p0}, Lcom/sec/android/app/camera/CameraSettings;->getPreferences()Lcom/sec/android/app/camera/ComboPreferences;

    move-result-object v0

    const-string v1, "pref_camera_shuttersound_key"

    const/4 v2, 0x1

    invoke-virtual {v0, v1, v2}, Lcom/sec/android/app/camera/ComboPreferences;->getInt(Ljava/lang/String;I)I

    move-result v0

    goto :goto_9
.end method



同様に、下記部分を置き換えます。

.method public setCameraShutterSound(I)V

 

.method public setCameraShutterSound(I)V
    .registers 6
    .param p1, "shuttersound"    # I

    .prologue
    invoke-virtual {p0}, Lcom/sec/android/app/camera/CameraSettings;->getPreferences()Lcom/sec/android/app/camera/ComboPreferences;

    move-result-object v1

    const-string v2, "pref_camera_shuttersound_key"

    const/4 v3, 0x1

    invoke-virtual {v1, v2, v3}, Lcom/sec/android/app/camera/ComboPreferences;->getInt(Ljava/lang/String;I)I

    move-result v1

    iput v1, p0, Lcom/sec/android/app/camera/CameraSettings;->mShutterSound:I

    iget v1, p0, Lcom/sec/android/app/camera/CameraSettings;->mShutterSound:I

    if-eq v1, p1, :cond_42

    const-string v1, "CameraSettings"

    new-instance v2, Ljava/lang/StringBuilder;

    invoke-direct {v2}, Ljava/lang/StringBuilder;->()V

    const-string v3, "setCameraShutterSound "

    invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v2

    invoke-virtual {v2, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    move-result-object v2

    invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v2

    invoke-static {v1, v2}, Landroid/util/Log;->secV(Ljava/lang/String;Ljava/lang/String;)I

    iput p1, p0, Lcom/sec/android/app/camera/CameraSettings;->mShutterSound:I

    invoke-virtual {p0}, Lcom/sec/android/app/camera/CameraSettings;->getPreferences()Lcom/sec/android/app/camera/ComboPreferences;

    move-result-object v1

    invoke-virtual {v1}, Lcom/sec/android/app/camera/ComboPreferences;->edit()Landroid/content/SharedPreferences$Editor;

    move-result-object v0

    .local v0, "editor":Landroid/content/SharedPreferences$Editor;
    const-string v1, "pref_camera_shuttersound_key"

    iget v2, p0, Lcom/sec/android/app/camera/CameraSettings;->mShutterSound:I

    invoke-interface {v0, v1, v2}, Landroid/content/SharedPreferences$Editor;->putInt(Ljava/lang/String;I)Landroid/content/SharedPreferences$Editor;

    invoke-interface {v0}, Landroid/content/SharedPreferences$Editor;->apply()V

    const/16 v1, 0x15

    invoke-virtual {p0, v1, p1}, Lcom/sec/android/app/camera/CameraSettings;->notifyCameraSettingsChanged(II)V

    .end local v0    # "editor":Landroid/content/SharedPreferences$Editor;
    :cond_42
    return-void
.end method

 

なお、上記差し替え分はAndroid 4.3 MJ7用です。同じ機種でもOSのバージョンの違いによって正常に機能しない可能性がありますので注意してください。

3)classes.dexの作成

作業用フォルダでコマンドプロンプトから下記を実行します。

java -jar smali.jar test -o classes.dex

以下のファイルが作成されます。

classes.dex

4)deodex化

作業用フォルダでコマンドプロンプトから下記を実行します。

7z a -tzip SamsungCamera2.apk classes.dex

作業用フォルダ内のSamsungCamera2.apkが更新されます。

更新されたファイルは、odexファイルを取り込んだ物(deodex)になりますので、端末の/system/app/SamsungCamera2.apkに上書きすれば、無音カメラアプリとして使えますが、カメラアプリ自体を差し替えずにodexファイルだけを差し替えたい場合は、以下の作業を行ってください。

【odexファイルの作成】(オプション)

ここから先はSDKが使える環境になっている事が前提です。

1)dexopt-wrapper入手

以下のサイトからdexopt-wrapperをダウンロードして解凍し、端末の/data/local/tmp/に置きます。

http://forum.xda-developers.com/showpost.php?p=3864655&postcount=36

以下の様にSDKからpushしても良いですし、ESファイルエクスプローラー等を使っても構いません。

adb push dexopt-wrapper /data/local/tmp/

同様に、作成したdeodexファイル(SamsungCamera2.apk)も/data/local/tmp/に置きます。

2)odexファイルの作成

adbから下記を実行します。

adb shell chmod 755 /data/local/tmp/dexopt-wrapper
adb shell
cd /data/local/tmp
./dexopt-wrapper SamsungCamera2.apk SamsungCamera2.odex
busybox dd if=/system/app/SamsungCamera2.odex of=SamsungCamera.odex bs=1 count=20 skip=52 seek=52 conv=notrunc

/data/local/tmp/にSamsungCamera.odexが作成されますので、これを/system/app/SamsungCamera.odexに上書きします。

以上で無音化は終了ですが、この手法は工数が多いので、常に無音でよいのでしたら、冒頭で紹介したアプリの音源ファイルを差し替える方が手軽でよいかと思います。

最新の機種については下記をご参照ください。

Galaxy Note 9(SM-N960F/DS)のカメラの無音化
https://galaxy-shw-m110s.blogspot.com/2018/12/galaxy-note-9sm-n960fds_22.html

2013/11/02

常にバックグラウンドで起動してRAMやバッテリーを消費しているアプリをGreenifyで休止


Last Update ; 22/Nov/2015

Greenifyを使用すると、常にバックグラウンドで起動してRAMやバッテリーを消費しているアプリを休止して、端末の動作がモッサリするのを防止したりバッテリー消費を抑制したり出来ます。

OSの標準機能でも、一部の不要なアプリを無効にしたり、バックグラウンドの通信を制限したりする事は出来ますが、「たまに使うので無効化は出来ないがバックグランドで勝手に起動するのを止めたい」という場合にはGreenifyが有効です。

Greenify *ROOT: Renew my Phone
https://play.google.com/store/apps/details?id=com.oasisfeng.greenify

(参考)Galaxy Note 5でroot化前の標準状態で削除や無効化したプリインストールアプリ
http://galaxy-shw-m110s.blogspot.kr/2015/10/galaxy-note-5root.html

(参考)Galaxy Note 5の不要なプリインストールアプリをスクリプトで一括無効化
http://galaxy-shw-m110s.blogspot.kr/2015/10/galaxy-note-5_22.html

(参考)モバイルデータ使用時のバックグラウンドでの通信を制限しているアプリ
http://galaxy-shw-m110s.blogspot.kr/2015/09/blog-post.html

Greenifyならば、一般的なタスクキラーで発生する”cat-mouse-game”(起動とKillの無限ループによる端末のパフォーマンスの低下とバッテリー消費)の心配はありません。

Greenifyに登録されたアプリは、通常通り起動して使用することは出来ますが、バックグラウンドに回って暫くすると自動的に休止し、[アプリケーション管理][実行中]にも表示されなくなります。

但し、ver 1.95時点ではこの間隔をユーザーが設定する事は出来ませんし、設定機能を実装する計画も無いそうです。

無料版ではシステムアプリを休止させる事は出来ませんが、有料版を購入するとシステムアプリも休止する事が出来ます。

バックグラウンドでの常時起動が必要なシステムアプリを休止させると重大な問題が生じる場合がありますので、十分注意して自己責任で使用してください。

【設定方法】

右下の「+」ボタンを押して「アプリ分析」画面に入り、休止させたいアプリを選択(複数選択可)して、右上の「レ」マークをタップすると休止アプリリストに登録されます。


OS側で[アプリケーション管理][実行中]を確認し、その中にバックグラウンドに回ったら休止させたいアプリがあれば、それをGreenifyに登録するとよいでしょう。

【Greenify対象アプリ(例)】

 @Nifty News
 CACHATTO
 CACHATTO Launcher (自作アプリ)
 ES ファイルエクスプローラ
 Excel
 Expedia
 Galaxyアカウント
 Google Search(自作アプリ)
 Polaris Office
 PowerPoint
 RAM管理(自作アプリ)
 Running Record(自作アプリ)
 SKT Hidden Menu(自作アプリ)
 System File Recovery(自作アプリ)
 System File Remover(自作アプリ)
 Twitter
 URL Shortener
 WiFi(自作アプリ)
 Word
 WPS Office (Kingsoft Office)
 アカウント(自作アプリ)
 ぐるなび
 アプリケーション管理(自作アプリ)
 TV番組表
 データ使用量(自作アプリ)
 バッテリー管理(自作アプリ)
 乗換案内
 翻訳
 開発者向けオプション(自作アプリ)
 韓国の地下鉄情報HD


Galaxyの標準ブラウザのメニューに終了オプションを追加


韓国版Galaxy S4 LTE-A(shv-e330s、SKテレコム版)の標準ブラウザのメニューに終了オプションを追加してみました。

システムファイルを編集しますので、root化してあることが条件です。

標準ブラウザは、戻るボタンで終了した様に見えても、タスクマネージャ等で終了させない限り、バックグラウンドで起動し続けています。

起動したままでも問題はありませんし、頻繁にブラウザを使用する場合は、起動スピードやバッテリー消費の両面から、バックグラウンドで起動したままの方が良いのですが、選択肢を増やすという意味でやってみました。

ファイルのコピーと編集にはESファイルエクスプローラを使用しました。

ESファイルエクスプローラー
https://www.do.global/zh_CN/product/

【手順】

1)/system/csc/feature.xmlをSDカード(Galaxyの場合は本体)かマイクロSDカードにコピー

コピーする際には、念の為、別名(original_feature.xml等)で元ファイルのバックアップも保存しておきましょう。

2)コピーしたfeature.xmlに以下を追記

<CscFeature_Web_AddOptionToTerminate>true</CscFeature_Web_AddOptionToTerminate>

今回は、判りやすいように、ファイルの先頭の方にある以下の部分のすぐ下に挿入しました。

<!- SKT ->
<FeatureSet>


端末上でタイプすると面倒ですし、タイプミスする可能性も高いので、メールで送るかKeep等で同期してコピペすると良いでしょう。

3)コピーしたfeature.xmlを/system/csc/feature.xmlに上書き

4)端末を再起動

標準ブラウザのメニューに「インターネットを終了」が追加されています。



システムの改竄やカスタマイズには端末が起動しなくなったり保証の対象外となるリスクが伴います。自己責任にてお願い致します。