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

2014/12/05

Pushbullet APIでOutlookへの新規メール受信をAndroidにPush通知する


Last Update : 09/Jul/2015

Outlookへの新規メール受信時にPusubullet APIを使ってAndroid端末にPush通知するようにしてみました。


想定される環境
以下の様な環境下での使用を想定しています。

・職場のセキュリティ・ポリシーで受信メールそのものの自動転送は禁止されている。
・Gmail等のメールやSNSの使用もProxyで撥ねられる。
・モバイル端末からVPNやセキュアなクライアントアプリを利用したメール閲覧は許可されている。
・クライアントアプリへのメールのPushサービスが提供されていない。
・職場のメールはOutlook(Exchangeサーバー)でProxy環境下。

PCのバックグラウンドで動作しますので、PCは常に稼働したままで、Outlookも常に起動したままにしておく必要があります。

メール本文を通知する事も出来ますが、そうすると、実質、自動転送と同じになってしまいますので、表題と送信者名だけにしています。

(追記)ご要望がありましたので、Push通知に余計な空白文字や改行、改頁、タブ等を削除したメール本文を含めるオプションを追加しました。(本文の有無の設定や文字数の制限も可能です。)

*ご利用にあたっては各職場のセキュリティポリシーに抵触しないかをご確認ください。
全体の動作の流れ
・Outlookのマクロで新規メール受信時に表題・送信者名・本文をテキストファイルに書き出す
・Outlookのマクロからnodejsのスクリプトを起動
・nodejsのスクリプトでテキストファイルから表題・送信者名・本文を読み込む
・nodejsのスクリプトからPushbullet APIを使って端末にPush通知
必要なもの
・ nodejs本体
・ nodejs用Proxy tunnelモジュール (=tunnel:Proxy環境下で必要)
・ nodejs用encord/decodeモジュール(=iconv-lite:Unicode対応に必要)
・ Outlook用マクロ(自作、詳細下記)
・ nodejs用Pusubullet APIスクリプト(自作、詳細下記)
・ スクリプト起動用バッチファイル
・ スパムフィルタ用テキストファイル *2種類
・ Pushbulletアプリ(Android側:https://play.google.com/store/apps/details?id=com.pushbullet.android
事前に調べておくこと
・Pushbullet Access Token(https://www.pushbullet.com/#settings/account
・Pushbullet Device iden (https://www.pushbullet.com/?device_iden=)
・ProxyのURI(例:http://xxx.xx.xxx.x:8080)
nodejsの準備
1)nodeJS本体


nodejs
http://nodejs.org/

nodejsをインストールしたら、以下のコマンドでproxy環境下でもnpmが使えるようにしておきます。(XXX部分はProxyのURIに置き換えます。)

npm config set proxy http://xxx.xx.xxx.x:8080
npm config set https-proxy http://xxx.xx.xxx.x:8080
npm config set registry http://registry.npmjs.org/

2)nodejs用モジュール

2-1)Proxy通過用モジュール

tunnel
https://www.npmjs.org/package/tunnel
インストール方法:npm install tunnel

2-2)encode/decode用モジュール

iconv-lite
https://www.npmjs.org/package/iconv-lite
インストール方法:npm install iconv-lite

注)本家iconvやそのパッチ版のinconv-jsは当方の環境ではnpmからインストール出来ませんでしたので今回は使用しませんでした。

iconv
https://www.npmjs.org/package/iconv

iconv-js
https://www.npmjs.org/package/iconv-js
Outlook用マクロの作成
新規メール受信時にメールから表題・送信者名・本文をテキストファイルに書き出し、nodejsスクリプトを起動してその後の処理を引き継ぐマクロです。

' PushBullet連携マクロ Ver 1.08
Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
    Dim objItem
    Set objItem = Session.GetItemFromID(EntryIDCollection)
    If objItem.MessageClass = "IPM.Note" Then
        AutoForward objItem
    End If
End Sub

Private Sub AutoForward(ByVal objMail As MailItem)
    '
    Dim strFileName As String
    Dim fwMail As MailItem
'   Dim i As Integer
    Dim strSenderName As String
    Dim strSenderEmailAddress As String
    Dim strSubject As String
    Dim strbody As String
'
    ' 受信メールの自動仕分けルールや迷惑メールフィルタと併用した場合のエラー対策
    On Error GoTo ErrorTrap
    '
    ' 受信メールから表題、送信者名、本文を取得
    strSubject = objMail.Subject    ' 表題を取得
    strSenderName = objMail.SenderName  ' 送信者名を取得
    strSenderEmailAddress = objMail.SenderEmailAddress  ' Emailアドレスを取得
    strbody = objMail.Body ' 本文を取得
    '
    ' 送信者名と送信者のEmailアドレスの表示処理
    ' 送信者名と送信者のEmailアドレスが同じ場合はEmailアドレスのみ表示
    If strSenderName = strSenderEmailAddress Then
        strSenderName = strSenderEmailAddress
    ' 送信者名と送信者のEmailアドレスが異なる場合は「送信者名+」で表示
    Else
        ' 送信者のメールアドレスがEmailの場合
        If InStr(strSenderEmailAddress, "@") Then
            strSenderName = strSenderName + "<" + strSenderEmailAddress + ">"
        ' 送信者のメールアドレスがExchangeの場合はSMTPアドレスを取得して表示
        Else
            strSenderEmailAddress = _
            objMail.Sender.PropertyAccessor.GetProperty("http://schemas." _
            & "microsoft.com/mapi/proptag/0x39FE001E")
            strSenderName = strSenderName + "<" + strSenderEmailAddress + ">"
        End If
    End If
    '
    ' ファイルの書込
    '
    ' 表題
    Dim txt1 As Object
    Set txt1 = CreateObject("ADODB.Stream")
    txt1.Type = adTypeText
    txt1.Charset = "utf-8"  ' 文字コードを指定
    txt1.Open
    txt1.WriteText strSubject, adWriteChar
    txt1.SaveToFile ("C:\Program Files\nodejs\titleutf8.txt"), adSaveCreateOverWrite
    txt1.Close
    Set txt1 = Nothing
    '
    ' 送信者名
    Dim txt2 As Object
    Set txt2 = CreateObject("ADODB.Stream")
    txt2.Type = adTypeText
    txt2.Charset = "utf-8"   ' 文字コードを指定
    txt2.Open
    txt2.WriteText strSenderName, adWriteChar
    txt2.SaveToFile ("C:\Program Files\nodejs\nameutf8.txt"), adSaveCreateOverWrite
    txt2.Close
    Set txt2 = Nothing
    '
    '本文
    Dim txt3 As Object
    Set txt3 = CreateObject("ADODB.Stream")
    txt3.Type = adTypeText
    txt3.Charset = "utf-8"   ' 文字コードを指定
    txt3.Open
    txt3.WriteText strbody, adWriteChar
    txt3.SaveToFile ("C:\Program Files\nodejs\mailutf8.txt"), adSaveCreateOverWrite
    txt3.Close
    Set txt3 = Nothing
    '
    ' Nodejsのスクリプトを起動
    Dim rc As Long
    rc = Shell("C:\Program Files\nodejs\Run.bat", vbHide)
'
ErrorTrap:
'
End Sub


このマクロは新規メール受信時に自動起動します。

Exchangeメールの場合はサーバーにアクセスして送信者のEmailアドレスを取得する処理も行っています。

日本語以外のUnicode文字(韓国語等)の文字化け防止の為、表題・送信者名・本文をテキストファイルに書き出す際に文字コードを指定する様にしています。

テキストファイルに書き出した後、マクロの最後の部分で実行用のバッチファイルからnodejsのスクリプトを実行して処理を引き継ぎます。

このマクロは初回実行時に"C:\Program Files\nodejs\"に以下の3つのテキストファイルを自動作成しす。

titleutf8.txt
nameutf8.txt
mailutf8.txt

OfficeのマクロからShift-JIS以外の文字コードでファイルを出力する為に、ADODB.Streamを使用しますので、Visual Basic Editorの[ツール][参照設定]から"Mctosoft Active data Object X.X Library"を有効にしておいてください。


マクロの登録やデジタル署名の仕方等は下記投稿を参照してください。(今回のマクロには下記のマクロの機能の一部を移植しました。)

Outlook自動転送マクロ
http://galaxy-shw-m110s.blogspot.kr/2013/02/outlook.html


Pushbullet API用のnodejsスクリプトの作成
以下のスクリプトを作成し、"Notify.js"というファイル名にして"C:\Program Files\nodejs\"に置きます。

このスクリプトではテキストファイルから表題・送信者名・本文を読み込んで、Pushbullet APIを使って端末にPush通知を送ります。


// Pushbullet連携スクリプト(本文サマリー転送) ver 1.13

// Proxy Tunnelの設定
var tunnel = require('tunnel');
var tunnelAg = tunnel.httpsOverHttp({
    proxy: {
        host: 'XXX.XX.XXX.X',
        port: 8080
    }
});

// PushBulletの設定
var https = require('https');
options = {
    host: 'api.pushbullet.com',
    port: 443,
    path: '/v2/pushes',
    method: 'POST',
    auth: 'XXXXX:',
    headers: { 'Content-Type': 'application/json' },
    agent: tunnelAg
};

var fs = require('fs');
var iconv = require('iconv-lite');

//送信者名をファイルから読み込みデコード
var name = fs.readFileSync('./nameutf8.txt');
var strname = iconv.decode(new Buffer(name), "utf8");

// 送信者名フィルタ
var strnamereplace = strname.replace(/(\s+)|(\(+)|(\)+)/g, "");
var spamlist = fs.readFileSync('./spamlist.txt');
var strspamlist = iconv.decode(new Buffer(spamlist), "utf8");
var strspamlistreplace = strspamlist.replace(/(\s+)|(\(+)|(\)+)/g, "");
var spamcheck = strspamlistreplace.search(strnamereplace);
if (spamcheck == -1) 
 {

//表題をファイルから読み込みデコード
var title = fs.readFileSync('./titleutf8.txt');
var strtitle = iconv.decode(new Buffer(title), "utf8");

//表題フイルタ
var strtitlereplace = strtitle.replace(/(\s+)|(\(+)|(\)+)/g, "");
var strtitlereplacesub = strtitlereplace.substring(0,8);
var keyword = fs.readFileSync('./keyword.txt');
var strkeyword = iconv.decode(new Buffer(keyword), "utf8");
var strkeywordreplace = strkeyword.replace(/(\s+)|(\(+)|(\)+)/g, "");
var keywordcheck = strkeywordreplace.search(strtitlereplacesub);
if (keywordcheck == -1) 
 {

// 表題と本文をファイルから読み込みデコード
var mail = fs.readFileSync('./mailutf8.txt');
var strmail = iconv.decode(new Buffer(mail), "utf8");

//本文から空白削除と文字数制限して送信者名と結合
var strsummary = strmail.substring(0,180);
var strsummaryreplace1 = strsummary.replace(/([ ]+)|(\r+)|(\t+)|(\n+)|(\f+)/g, "");
var strsummaryreplace2 = strsummaryreplace1.replace(/([  ]+)/g, " ");
var strbody = strname + strsummaryreplace2;

// Pushbullet APIに送信
var req = https.request(options, function (res) {
    body = ''
    res.on('data', function(chunk) {
        body += chunk;
    });
    res.on('end', function() {
    });
});
req.on('error', function (e) { console.error(e); });
var params = {
    device_id: "XXXXX",
    type: 'note',
    title: strtitle,
    body: strbody
};
req.write(JSON.stringify(params));
req.end();

}
else{
};
}
else{
};


以下の投稿を参考にさせて頂きましたが、pushbullet APIの仕様が変更されていますので、"hostname"と"path"の部分は修正しています。

Having trouble posting notifications with node.js
http://www.reddit.com/r/PushBullet/comments/18stku/having_trouble_posting_notifications_with_nodejs/

変更した箇所:
hostname: 'www.pushbullet.com', =>   host: 'api.pushbullet.com',
path: '/api/pushes', =>  path: '/v2/pushes',

また、"title"や"body"は外部テキストファイルから読み込む様に変更して、文字化け防止の為のdecode処理も追加しています。

簡易スパムフィルタ機能も追加しました。(設定方法等は【5】参照。)

以下の項目はご自分の環境に合わせて設定して下さい。

1)Proxy

"host: 'xxx.xx.xxx.x'"にお使いのProxyのURIを記入してください。

// Proxy Tunnelの設定
var tunnel = require('tunnel');
var tunnelAg = tunnel.httpsOverHttp({
    proxy: {
        host: 'xxx.xx.xxx.x',
        port: 8080


2)Pushbullet Access Token

"auth : 'xxxxx' "にPushbullet Access Token(32桁)を記入して下さい。

// PushBulletの設定
var https = require('https');
options = {
    host: 'api.pushbullet.com',
    port: 443,
    path: '/v2/pushes',
    method: 'POST',
    auth: 'xxxxx:',
    headers: { 'Content-Type': 'application/json' },Access Tokenは下記で確認出来ます。

Pushbullet Access Token
https://www.pushbullet.com/#settings/account


3)Device IDEN

"device_id:"xxxxx""に端末のiden(22桁)を記入してください。

// Pushbullet APIに送信
var req = https.request(options, function (res) {
    body = ''
    res.on('data', function(chunk) {
        body += chunk;
    });
    res.on('end', function() {
    });
});
req.on('error', function (e) { console.error(e); });
var params = {
    device_id: "xxxxx",
    type: 'note',

端末idenは下記のページで端末名をクリックするとブラウザのURL欄に表示されます。

Pushbullet Device iden
https://www.pushbullet.com/


4)本文の有無と文字数制限

"var strsummary = strmail.substring(0,180);"でPush通知に含める本文の文字数を指定します。

//本文から空白削除と文字数制限して送信者名と結合
var strsummary = strmail.substring(0,180);
var strsummaryreplace1 = strsummary.replace(/([ ]+)|(\r+)|(\t+)|(\n+)|(\f+)/g, "");
var strsummaryreplace2 = strsummaryreplace1.replace(/([  ]+)/g, " ");
var strbody = strname + strsummaryreplace2;

本文は余計な空白文字や改行、改頁、タブ等を削除して送信しますので、この文字数はそれらを除いた文字数になります。

この部分を"0(ゼロ)"にするとPush通知に本文が含まれなくなります。

当方の環境では端末の通知領域に表示されるのは送信者名を含めて200文字迄でしたので、添付の例では送信者名を差し引いて180文字にしています。(200字を超える文字数を送信した場合も、Pushbulletアプリを開けば見ることは出来ます。)

注)nodejsからのPushbullet APIを使ったPush通知によく使われるpushbulletモジュールは、自宅PCからは使えましたが職場のProxy環境下では上手く動作しませんでしたので、今回は使用しませんでした。

pushbullet(nodejsモジュール)
https://www.npmjs.org/package/pushbullet
スクリプト実行用バッチファイルを用意
NodejsスクリプトをOutlookのマクロから実行する為に、下記の2行だけのバッチファイルを作成して"C:\Program Files\nodejs\"に置きます。

Run.bat
cd C:\Program Files\nodejs
node Notify.js
スパムフィルタ用バッチファイルを用意
簡易スパムフィルタ用の下記2つのテキストファイルを"C:\Program Files\nodejs\"に置きます。

spamlist.txt
keyword.txt

文字コードはutf-8にしてください。

1)spamlist.txt

送信者名をこのファイルに記入しておくと、その送信者からのメールについては端末にpush通知は送られません。(送信者名は完全に一致する必要があります。)

送信者名毎の改行の有無は問いませんが、改行があった方が見やすいと思います。

PCのブラウザでpushbulletを開き、不要な通知の送信者名をこのファイルにコピペしておくと良いでしょう。

2)keyword.txt

キーワードをこのファイルに記入しておくと、表題がキーワードで始まる場合は端末にPush通知を送りません。(前方一致に近い動作になります。)

キーワード毎の改行の有無は問いませんが、改行があった方が見やすいと思います。

デフォルトでは表題の頭9文字(空白削除後)をキーワードリストと比較していますが、お好みに合わせて"var strtitlereplacesub = strtitlereplace.substring(0,8);"の部分を調整して下さい。

//表題フイルタ
var strtitlereplace = strtitle.replace(/(\s+)|(\(+)|(\)+)/g, "");
var strtitlereplacesub = strtitlereplace.substring(0,8);
var keyword = fs.readFileSync('./keyword.txt');

全体のファイル構成
全体のフォルダ構成は下記の様になります。

C:\Program Files\nodejs
     └ node_modules
             └ iconv-lite
             └ npm
             └  tunnel
             └ (略)
     └ keyword.txt
     └ mailutf8.txt
     └ nameutf8.txt
     └ node.exe
     └ Notify.js
     └ Run.bat
     └ spamlist.txt
     └ titleutf8.txt
     └ (略)
問題点・今後の課題
Outlookの仕分けルールを使って受信時に自動的にフォルダーに移動しているメールについても、マクロが仕訳ルールよりも先に動作してしまう為、端末に通知が送られてしまいます。

必要に応じて例外処理を追加すると良いでしょう。


(追記)Ver 1.09で簡易スパムフィルタ機能を追加しました。

また、Android用のPushbulletアプリ(~ver 15.2.5)では受信したnoteの一括選択が出来ず、溜まったnoteの整理が不便です。

アプリ側が改善される迄は、PCのブラウザからPushbulletにアクセスしてマウスでXボタンを連打して消去するのが良いでしょう。(一番良いのは、Pushbullet APIに古いnoteを整理する機能が追加されて自動化出来るようになる事ですが。)

(追記)PC用のChromeの拡張機能で[Select All][Delete Selected][Refresh Boxes][Delete All]の4ボタンを追加するものがありました。





Pushbully: Bulk Delete Pushes

https://chrome.google.com/webstore/detail/pushbully-bulk-delete-pus/kamddpgihdoijjoekiambdmbngpgiaoi

(追記)Pushbulletサイトの改変により上記Chromeの拡張機能が動作しなくなりましたので、以下のスクリプトを作成しました。

PushbulletのPushをワンクリックで一括削除するスクリプト(Chrome用)
http://galaxy-shw-m110s.blogspot.jp/2015/07/pushbulletpushchrome.html


2014/11/13

Galaxyシリーズのファームウェアのリビジョン番号の法則性


韓国のスマートフォンユーザーフォーラムにGalaxyシリーズのファームウェアのリビジョン番号の法則性が載っていました。

1桁目:年度
2桁目:月(Aが1月、Bが2月)
3桁目:その月内のビルド回数(10回目からはアルファベット)

手元にリリース日の記録が残っているもの(当ブログにサムスンのHPのスクリーンショットを貼ってあるもの)で確認してみました。

機種名 リビジョン名 リリース日 法則に合致
S4 (e300s) NJ1 14.10.13
S3 (e210s) NI3 14.09.23
S4 LTE-A (e330s) NG9 14.08.05
S4 (e300s) NG7 14.08.01
S4 (e300s) NG3 14.07.23
S4 LTE-A (e330s) NG1 14.07.09
S4 LTE-A (e330s) NE2 14.05.16
S3 (e210s) ND1 14.05.08
S4 (e300s) ND1 14.04.14
S4 (e300s) NB2 14.02.19

もっと遡って前年分についても確認してみましたが、リリース日が月初になってしまった一部を除いて、法則に合致しているようです。

S4とS4 LTE-Aの様な兄弟機種ならば同じアップデイト内容は同じリビジョン番号になるのだと思っていましたが、必ずしもそうとは限らないのかも知れません。




2014/10/30

ギターの練習用に使っているアプリ


Last Update : 28/Nov/2016

ギターの練習用に使っているアプリのメモです。

【Android側】

■Guitar Tab Player(Guitar Pro互換アプリ)
 https://play.google.com/store/apps/details?id=guitartab.player

主にPC側で作成したGuitar Pro形式のファイルをAndroid上で再生する為に使用しています。


■メトロノームのビート(メトロノームアプリ)
 https://play.google.com/store/apps/details?id=com.andymstone.metronome

リズム練習に使用しています。
タップ機能を使って楽曲のテンポを測るのにも使っています。(TuxGuitarに打ち込んだ楽曲のテンポ設定用。)


■Walk Band(GarageBand的アプリ)
 https://play.google.com/store/apps/details?id=com.gamestar.pianoperfect&hl=ja

カラオケが作れます。まだ全然使いこなせていません。上達すれば作曲も。


■Tuner - gStrings Free(ギターチューナー)
 https://play.google.com/store/apps/details?id=org.cohortor.gstrings


■AmpliTube UA(ギター用マルチエフェクタ)

iRig UAのコントロール用のアプリです。


(参考)iRig UA

■Riff Maestro(音楽プレーヤ)

曲を部分的に繰り返し再生したり、スロー再生したり出来ます。


【PC側】

■TuxGuitar(Guitar Pro互換アプリ)
 http://www.tuxguitar.com.ar/

五線譜やTAB譜を作り、再生したり、mp3ファイルをエクスポートしたり出来ます。
他の楽器の楽譜も入力してバンドスコアを作れば簡易カラオケにもなります。


■聞々ハヤえもん(MP3ファイルの再生速度変更)
 http://soft.edolfzoku.com/hayaemon2/

難しいフレーズ部分は再生速度を落としたファイルを作成して繰り返し聞いたり弾いたりしています。


■LAME(聞々ハヤえもん使用時に必須)
 http://www.rarewares.org/mp3-lame-bundle.php

■mp3DirectCut(mp3ファイル編集)
 http://www.mpex.net/software/download/mp3directcut.html

難しいフレーズ部分だけを切り出したmp3ファイルを作成し、繰り返し練習したりします。


■PANDORA mini & stomp SoundEditor(KORG Pandora Stom用ユーティリティ)
 http://www.korg.co.jp/Support/Download/Software/PANDORAminiEditor/win.html

Pandora Stomp
http://www.korg.com/jp/products/effects/pandora_stomp/


KORGのPandora Stomp(エフェクタ)の設定をUSBケーブルで接続したPCから行えます。





2014/08/12

Facebookを標準ブラウザで開くアプリをTaskerで自作


標準ブラウザでFacebookのURLを開くだけのアプリをTaskerで自作してみました。

【背景】

Android用のFacebook公式アプリからMessage機能が切りだされて別アプリになりましたが、このMessengerアプリには、同期(連絡先の同期ではなくメッセージの同期)をOn/Offする設定がなく、常にバックグラウンドで起動しています。

通知についても、一時的にOffにする事は出来ますが、恒久的にOffにすることは出来ない特殊な仕様になっています。

また、当方の環境では、Greenifyで休止させても、一度メッセージを閲覧すると起動したままになり、自動的に休止状態に戻ることはありません。

元々、Facebook公式アプリは、通知や同期をOffにしていても常にバックグラウンドで起動していたり(Greenifyで休止することは出来ます)、アプリがアップデイトされた際にOffにしていた筈の通知がOnになったりする事があったりと、仕様面で当方の好みに合わない部分があったのですが、この機会に、公式アプリの使用を辞め、標準ブラウザでFacebookのURLを開くだけのアプリをTaskerで自作して代替する事にしました。

自作アプリと言っても、僅か数分で簡単に出来るものです。

【作成方法】

Taskerの[NET][Browse URL]に[https://ja-jp.facebook.com/]と登録するだけです。

アイコンはFacebook公式アプリの物をそのまま使用しています。




2014/05/07

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


韓国版のGalaxy S4 LTE-A(shv-e330s、SKテレコム版)のOSをAndroid 4.4.2(KitKat)にアップデイト後にバッテリー消費を計測していませんでしたので、遅ればせながら、再計測してみました。

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

【環境・条件】

ファームウェアバージョン : NC4

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

追加インストールしたアプリ
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は導入しています。)

【今回の計測結果】

測定時間 測定開始時 測定終了時 1時間あたり
07:41 100% 96% 0.521%
07:06 100% 96% 0.563%
09:44 100% 95% 0.514%
06:17 100% 98% 0.318%
06:36 100% 97% 0.456%
06:56 100% 97% 0.433%
平均 0.467%

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

機種 OS 備考 結果
Galaxy S4 LTE-A 4.4.2 LTE,NC4 0.467%/Hour
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

Android 4.3時の計測値と比較して若干悪化しています(体感的にも悪化している気がします)が、使用しているアプリのUpdateや、バッテリーの劣化に依るものかも知れません。


2014/03/19

不要なプリインストールアプリを一括で無効化するスクリプト


Last Update : 18/Jun/2015

最新の設定については下記を参照してください。
Galaxy Note 9で削除や無効化したプリインストールアプリ
https://galaxy-shw-m110s.blogspot.com/2018/12/galaxy-note-9.html

キャリアで購入した端末には多くのシステムアプリがプリインストールされています。

不要なシステムアプリは、無効にしたり、Greenifyで休眠させたりする事で、バックグラウンドでの無駄な起動を防いでいるのですが、全く使わないのに無効化出来ないアプリもあります。

そこで、こうした不要アプリの拡張子を一括で変換して無効にするスクリプトを作成してみました。

対象アプリの追加・削除を容易にする為、別ファイルのアプリリスト(テキストで箇条書き)を読み込んで動作する様にしてあります。

当然、端末がroot化されている事が条件です。

(参考)Galaxy S4で無効にしているアプリ
http://galaxy-shw-m110s.blogspot.kr/2013/05/galaxy-s4.html

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

【スクリプト】

今回作成したのは以下のスクリプトです。

#!/system/bin/sh
if [ -f /system/xbin/su ]; then
 busybox mount -o remount,rw /system
 while read LINE
  do
       if [ -f $LINE  ]; then
   mv $LINE $LINE.old
   echo " Renamed $LINE "
  else
   echo " Can't find $LINE "  
  fi
 done < /data/tool/filelist.txt
fi
echo "Done"

スクリプトのファイル名は任意ですが、今回は、拡張子無しの"rename"にしました。

ファイルを保存する際はファイルの改行形式と権限に注意して下さい。


このスクリプトでは、ファイルの拡張子を".old"に変更(実際は元の拡張子の後ろに更に追加)する事で無効化していますが、お好みに応じて、ファイルを削除したり、移動(バックアップ)したりするスクリプトに書き換えても良いでしょう。

【アプリリスト(例)】

当方が対象としているアプリやファイルは以下です。

/system/app/AllshareFileShareServer/AllshareFileShareServer.apk(Wi-Fi Direct共有)
/system/app/AllshareMediaServer.apk/AllshareMediaServer.apk(近くのデバイス)
/system/app/AllshareMediaShare/AllshareMediaShare.apk(Nearby Service)
/system/app/ARMService/ARMService.apk (T store ARM)
/system/app/BeamService/BeamService.apk(Beaming Service)
/system/app/Bridge/Bridge.apk(KNOX)
/system/priv-app/CloudAgent/CloudAgent.apk(Clound Agent)
/system/app/DMMonitor/DMMonitor.apk (DMMonitor)
/system/priv-app/DSMLawmo/DSMLawmo.apk(DSMLawmo)
/system/app/ELMAgent/ELMAgent.apk (ELMAgent )
/system/app/GearManagerStub/GearManagerStub.apk(Gear Manager)
/system/app/GestureService/GestureService.apk(Gesture Service)
/system/app/GlanceView/GlanceView.apk (GlanceViewMK)
/system/priv-app/KLMSAgent/KLMSAgent.apk (KLMS Agent)
/sytem/app/KnoxAttestaionAgent/KnoxAttestationAgent.apk (KNOX)
/sytem/app/KnoxMigrationAgent/KnoxMigrationAgent.apk (KNOX)
/system/app/KnoxSetupWizardClient/KnoxSetupWizardClient.apk(KNOX)
/system/app/KnoxSetupWizardStub/KnoxSetupWizardStub.apk(KNOX)
/sytem/app/KnoxStore/KnoxStore.apk (KNOX)
/system/app/QuickConnect/QuickConnect.apk (クイック接続)
/system/app/SamsungHub/SamsungHub.apk (Samsung Hub)
/system/app/SamsungHubUpdater/SamsungHubUpdater.apk (Samsung Hub Updater)
/system/priv-app/sCloudDataSync/sCloudDataSync.apk(S-Cloud)
/system/priv-app/sCloudSyncSNote/sCloudSyncSNote.apk (Samsung SNote SyncAdapter.)
/system/app/SecEmail_K/SecEmail_K.apk (Eメール)
/system/app/SecExchange/SecExchange.apk (Eメール)
/system/app/SecKidsModeInstaller/SecKidsModeInstaller.apk(キッズモード)
/system/app/SecurityManagerService/SecurityManagerService.apk(KNOX関連)
/system/priv-app/SFinder/SFinder.apk (Sファインダー)
/system/priv-app/ShareVideo/ShareVideo.apk(動画を共有)
/system/app/SwitchKnoxI/SwitchKnoxI.apk (KNOX)
/system/app/SwitchKnoxII/SwitchKnoxII.apk (KNOX)
/system/priv-app/TPhone/TPhone.apk(T phone)
/system/priv-app/EasyLauncher/EasyLauncher.apk (TouchWizかんたんホーム)
/system/priv-app/TstoreAgent/TstoreAgent.apk  (T store Agent)
/system/priv-app/Z0000TSEED/Z0000TSEED.apk (T Store Utility)
/system/media/audio/ui/Cam_Start.ogg
/system/media/audio/ui/Cam_Stop.ogg
/system/media/audio/ui/Shutter.ogg

カメラの無音化時に無効化する必要のある音源ファイル(拡張子が".ogg"の物)も対象にしています。

フォルダは同じ機種でもファームウェアのバージョンにより"/system/app"から"/system/priv-app/"に変更される場合がありますので注意して下さい。

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

リストに追加する際は、フルパスのファイル名を拡張子付きで記入します。

/system/app/AllshareFileShareServer/AllshareFileShareServer.apk
/system/app/AllshareMediaServer/AllshareMediaServer.apk
/system/app/AllshareMediaShare/AllshareMediaShare.apk
/system/app/ARMService/ARMService.apk
/system/app/BeamService/BeamService.apk
/system/app/Bridge/Bridge.apk
/system/priv-app/CloudAgent/CloudAgent.apk
/system/app/DMMonitor/DMMonitor.apk
/system/priv-app/DSMLawmo/DSMLawmo.apk
/system/app/ELMAgent/ELMAgent.apk
/system/app/GearManagerStub/GearManagerStub.apk
/system/app/GestureService/GestureService.apk
/system/app/GlanceView/GlanceView.apk
/system/priv-app/KLMSAgent/KLMSAgent.apk
/sytem/app/KnoxAttestaionAgent/KnoxAttestationAgent.apk
/sytem/app/KnoxMigrationAgent/KnoxMigrationAgent.apk
/system/app/KnoxSetupWizardClient/KnoxSetupWizardClient.apk
/system/app/KnoxSetupWizardStub/KnoxSetupWizardStub.apk
/sytem/app/KnoxStore/KnoxStore.apk
/system/app/QuickConnect/QuickConnect.apk
/system/app/SamsungHub/SamsungHub.apk
/system/app/SamsungHubUpdater/SamsungHubUpdater.apk
/system/priv-app/sCloudDataSync/sCloudDataSync.apk
stem/priv-app/sCloudSyncSNote/sCloudSyncSNote.apk
/system/app/SecEmail_K/SecEmail_K.apk
/system/app/SecExchange/SecExchange.apk
/system/app/SecKidsModeInstaller/SecKidsModeInstaller.apk
/system/app/SecurityManagerService/SecurityManagerService.apk
/system/priv-app/SFinder/SFinder.apk
/system/priv-app/ShareVideo/ShareVideo.apk
/system/app/SwitchKnoxI/SwitchKnoxI.apk
/system/app/SwitchKnoxII/SwitchKnoxII.apk
/system/priv-app/TPhone/TPhone.apk
/system/priv-app/EasyLauncher/EasyLauncher.apk
/system/priv-app/TstoreAgent/TstoreAgent.apk
/system/priv-app/Z0000TSEED/Z0000TSEED.apk
/system/media/audio/ui/Cam_Start.ogg
/system/media/audio/ui/Cam_Stop.ogg
/system/media/audio/ui/Shutter.ogg


スクリプト同様、改行形式や権限に注意し、また、余計な空白行が入らないようにして下さい。

今回のスクリプトではスクリプトから呼び出すアプリリストのファイル名を"filelist.txt"に固定していますので、このファイル名にしてください。

【使用方法】

スクリプトを登録・実行出来るアプリを使用して下さい。

今回は、GScriptを使用しました。

GScript Lite
https://play.google.com/store/apps/details?id=nl.rogro.GScriptLite

今回のスクリプトでは、スクリプトから呼び出すアプリリストを"/data/tool/filelist.text"としていますので、'"/data/tool/"というフォルダを作成し、スクリプトもアプリリストもその中に置きます。


GScriptに登録します。


スクリプトを走らせると、拡張子が変更され、以下の様な画面が表示されます。


"Done"と表示されたら終了です。念の為、端末を再起動しておきましょう。

ファイラーで確認してみると、ファイルの拡張子が変更されています。


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