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

2015/10/23

Galaxy Note 5のカメラの無音化


Last Update : 23/Mar/2016

Galaxy Note 5の標準カメラアプリの中身とシステム領域にある音源ファイルを弄る事によりAF音とシャッター音を無音化してみました。

機種は韓国版のGalaxy Note 5(SM-n920s、SKテレコム版)です。

以下のバージョンのファームウェアでそれぞれ実施して問題が無いことを確認済です。

OH4/OHB/OI8/OJ2

端末がroot化されている事が前提条件です。

無音化が上手く出来ない原因の大半は、ZIP時の圧縮レートの設定ミスかアプリの権限の未設定ですので、この2点に十分注意して下さい。 

【カメラアプリの加工】

ESファイルエクスプローラー等のファイラを使用して、端末から以下のカメラアプリを取り出してPCにコピーします。

/system/app/SamsungCamera4/SamsungCamera4.apk

追記:Android 6.0以降ではカメラアプリの場所が以下に変更されています。
/system/priv-app/SamsungCamera4/SamsungCamera4.apk

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

取り出したカメラアプリの解凍と圧縮にはAPK Multi-Toolを使用しました。


APK Multi-Tool
https://github.com/APK-Multi-Tool/APK-Multi-Tool/tree/WIP-2.0

手順は以下です。

1)APK Multi-Toolの"/place-apk-here-for-modding/"フォルダ内に、"SamsungCamera4.apk"を置きます。

2)"Script.bat"をクリックしてAPK Multi-Toolを起動します。

3)"Set current project"( "24"+[Enter])から"SamsungCamera4.apk"を選択します。

4)"Extrack apk"("1" + [Enter])を選択すると、"/projects/"フォルダの中に"SamsungCamera4.apk"というフォルダが出来ます。

5)Windowsのエクスプローラ等を利用して、"/SamsungCamera4.apk/res/raw/"内の以下のファイルを適当な無音ファイルに置き換えます。


6)APK Multi-Toolに戻り、"Select compression level for apk's"("21"+[Enter])を選択します。

"Enter Compression Leberl (0-9)"と聞かれますので"0"を入力します。

7)"Zip apk"("3"+[Enter])を選択します。

署名の有無を聞かれますので、"Regular apk"("2"+[Enter])を選択します。

8)"/place-apk-here-for-modding/"フォルダ内に"unsignedSamsungCamera4.apk"が出来ますので、これを"SamsungCamera4.apk"にリネームし、ファイラを利用して端末の"/system/app/SamsungCamera4/"にコピーします。

念の為、オリジナルのファイルもPCにバックアップしておくと良いでしょう。

アプリを置き換えたら権限を確認しておきましょう。(以下の様に設定して下さい。)


9)アプリを置き替えたら端末を再起動します。

【システムファイルの変更】

ESファイルエクスプローラー等のファイラを利用して"/system/media/audio/ui"内の以下のファイルの拡張子を適当なもの(”.old"等)にリネームして無効にします。


リネームするだけですので簡単に元に戻すことが出来ます。

他の不要なシステムアプリの無効化も一括して行うスクリプトを用意しておくと便利です。

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

【その他の機種のカメラの無音化】

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

Galaxy S4 LTE-Aのカメラの無音化(deodex版、odex版)
http://galaxy-shw-m110s.blogspot.kr/2013/11/galaxy-s4-lte-adeodexodex.html

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

Galaxy S3のカメラの無音化
http://galaxy-shw-m110s.blogspot.kr/2012/07/galaxy-s3.html

Galaxy S2(Android 4.0.3)のカメラの無音化
http://galaxy-shw-m110s.blogspot.kr/2012/03/galaxy-s2android-403.html

カメラのシャッター音の無音化(Galaxy S)
http://galaxy-shw-m110s.blogspot.kr/2010/11/blog-post_20.html

Galaxy S4のカメラの無音化(SDK使用)
http://galaxy-shw-m110s.blogspot.kr/2013/06/galaxy-s4me6.html

2015/10/22

Galaxy Note 5でroot化前の標準状態で削除や無効化したプリインストールアプリ


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

Galaxy Note9(SM-N960F/DS, Android 10)で無効にしているアプリ
https://galaxy-shw-m110s.blogspot.com/2020/01/galaxy-note9sm-n960fds-android-10.html

Last Update : 28/Nov/2018

最近の韓国のスマートフォンは、政府の指導もあり、プリインストールアプリの数が減って、プリインストールされているアプリも、設定メニューから無効化出来たり、システムファイルではなくユーザアプリとしてインストールされていてアンインストール出来る物が多くなっています。(これらのアプリは削除してもPlayストアやGalaxy Appsから再インストール出来ます。)

当方が無効化したリ削除したりしているアプリを以下にリストアップします。

無効化やアンインストール(削除)は"設定"=>"アプリケーション"=>"アプリケーション管理"=>"全て"から行います。


削除したアプリ
11st
11번가쇼킹딜
B tv mobile
Cymera
hoppin
MelOn
Nate
Ok Cashbag
OneDrive
Samsung Gear
S Health
Syrup
Syrup Order
Syrup Table
T contacts
T cloud
T freemium plus
T guard
T map
T 멤바십
スクラップブック
기프티곤
데이터Free Zone
스마트청구서
T 통화도우미
無効にしたアプリ
セットアップウィザード
ダウンロード
ハングアウト
フォト
フォトスクリーンセーバー
フォトノート
ブロックした電話番号用ストレージ
ベーシックスクリーンセーバー
ボイスウェイクアップ
マーケットフィードバックエージェント
ユーザーマニュアル
印刷スプーラ
英語(アメリカ)の言語パック
音声サービス
韓国語の音声パック
辞書
単語リスト
Adapt Sound
ANT Radio Service
ANT + Plugins Service
AppleMint
Briefing
ChocoEUKor
Chrome
Foundation
Galaxy Apps Widget
Google Playムービー&TV
Googleテキスト読み上げエンジン
Googleパートナーのセットアップ
ONE store Setup Wizard
PDFに書き込む
Phone Mode Setting
S ボイス
Samsung Galaxy
Samsung MirrorLink 1.1
Samsung決済
Tinker

なお、root化後に削除したシステムファイルについては以下を参照して下さい。

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



Galaxy Note 9の不要なプリインストールアプリをスクリプトで一括無効化


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

Galaxy Note9(SM-N960F/DS, Android 10)で無効にしているアプリ
https://galaxy-shw-m110s.blogspot.com/2020/01/galaxy-note9sm-n960fds-android-10.html

Last Update : 07/Sep/2019

Galaxy Note 9(SM-N960F、グローバル版)の不要なプリインストールアプリ(システムアプリ)をスクリプトを使用して一括で無効化するようにしてみました。

標準状態で削除や無効化出来ないアプリが対象です。

(参考)Galaxy Note 9で削除や無効化したプリインストールアプリ
https://galaxy-shw-m110s.blogspot.com/2018/12/galaxy-note-9.html

Root化が必須です。

使用するアプリ

Tasker
https://play.google.com/store/apps/details?id=net.dinglisch.android.taskerm
無効化対象アプリ(Android 9.0, SH3の例)
/system/media/audio/ui/Cam_Start.ogg (カメラ操作音)
/system/media/audio/ui/Cam_Stop.ogg (カメラ操作音)
/system/media/audio/ui/camera_click.ogg (カメラ操作音)
/system/media/audio/ui/Shutter.ogg (カメラ操作音)
/system/media/audio/ui/VideoRecord.ogg (カメラ操作音)
/system/media/audio/ui/VideoStop.ogg (カメラ操作音)
/system/app/BBCAgent/BBCAgent.apk (KNOX関連)
/system/app/CnnPanel/CnnPanel.apk (CNN)
/system/app/EasymodeContactsWidget81/EasymodeContactsWidget81.apk (かんたんモード連絡先)
/system/app/GearManagerStub/GearManagerStub.apk (Gear Manager)
/system/app/GoogleVrServices/GoogleVrServices.apk (Google VR サービス)
/system/app/KidsHome_Installer/KidsHome_Installer.apk (KidsHome)
/system/app/KnoxAttestationAgent/KnoxAttestationAgent.apk (KNOX関連)
/system/app/KnoxKeyChain/KnoxKeyChain.apk (KNOX関連)
/system/app/Notes/Notes.apk (S ノート)
/system/app/SamsungPassAutofill_v1/SamsungPassAutofill_v1.apk (Samsung Pass)
/system/app/UnifiedWFC/UnifiedWFC.apk (Wi-Fi電話)
/system/app/UniversalMDMClient/UniversalMDMClient.apk (KNOX関連)
/system/app/Visionintelligence2/Visionintelligence2.apk (Bixby関連)
/system/app/Weather_SEP10.1/Weather_SEP10.1.apk (天気予報)
/system/app/YahooEdgeFinance/YahooEdgeFinance.apk (Edge Panel用アプリ)
/system/app/YahooEdgeSports/YahooEdgeSports.apk (Edge Panel用アプリ)
/system/priv-app/AirCommand/AirCommand.apk (エアコマンド)
/system/priv-app/AirReadingGlass/AirReadingGlass.apk (ルーペ)
/system/priv-app/AppsEdgePanel_v3.2/AppsEdgePanel_v3.2.apk (People edge)
/system/priv-app/AuthFramework/AuthFramework.apk (Samsung Pass)
/system/priv-app/BeaconManager/BeaconManager.apk (Smart Things)
/system/priv-app/Bixby/Bixby.apk (Bixby関連)
/system/priv-app/BixbyAgentStub/BixbyAgentStub.apk (Bixby関連)
/system/priv-app/BixbyHome/BixbyHome.apk (Bixby関連)
/system/priv-app/BixbyService/BixbyService.apk (Bixby関連)
/system/priv-app/BixbyVisionFramework/BixbyVisionFramework.apk (Bixby関連)
/system/priv-app/BixbyWakeup/BixbyWakeup.apk (Bixby関連)
/system/priv-app/BlueLightFilter/BlueLightFilter.apk (BlueLightFilter)
/system/priv-app/ContainerAgent3/ContainerAgent3.apk (KNOX)
/system/priv-app/DesktopModuleService/DesktopModuleService.apk (Samsung DEX)
/system/priv-app/DexCommunity/DexCommunity.apk (Samsung Dex)
/system/priv-app/EasySetup/EasySetup.apk (Smart Things)
/system/priv-app/GameHome/GameHome.apk (GameHome)
/system/priv-app/GearVRService/GearVRService.apk (Gear VR Service)
/system/priv-app/HealthService/HealthService.apk (HealthService)
/system/priv-app/KeyguardWallpaperUpdator/KeyguardWallpaperUpdator.apk (カテゴリ壁紙)
/system/priv-app/KLMSAgent/KLMSAgent.apk (KNOX関連)
/system/priv-app/knoxanalyticsagent/knoxanalyticsagent.apk (KNOX関連)
/system/priv-app/KnoxContainerDesktop/KnoxContainerDesktop.apk (KNOX)
/system/priv-app/KnoxCore/KnoxCore.apk (KNOX関連)
/system/priv-app/KnoxDesktopLauncher/KnoxDesktopLauncher.apk (KNOX関連)
/system/priv-app/KnoxGuard/KnoxGuard.apk (KNOX)
/system/priv-app/knoxvpnproxyhandler/knoxvpnproxyhandler.apk (KNOX関連)
/system/priv-app/LedCoverAppCrown/LedCoverAppCrown.apk (LEDアイコンエディタ)
/system/priv-app/PreloadInstaller/PreloadInstaller.apk (PreloadInstallerApp)
/system/priv-app/SamsungPass/SamsungPass.apk (Samsung Pass)
/system/priv-app/SecLiveWallpapersPicker/SecLiveWallpapersPicker.apk (Live壁紙選択)
/system/priv-app/SecMyFiles2018/SecMyFiles2018.apk (My File)
/system/priv-app/SecureFolder/SecureFolder.apk (SecureFolder)
/system/priv-app/SettingsBixby/SettingsBixby.apk (Bixby関連)
/system/priv-app/SystemUIBixby2/SystemUIBixby2.apk (Bixby関連)
/system/container/SharedDeviceKeyguard/SharedDeviceKeyguard.apk (KNOX関連)

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

同じ機種でもファームウェアのバージョンに依ってはフォルダが"/system/app"から"/system/priv-app/"に変更される場合がありますので注意して下さい。
設定方法
1) アプリリストの準備

アプリリストを"filelist.txt"というファイル名にして"/data/tool/"に置きます。

filelist.txt
/system/media/audio/ui/Cam_Start.ogg
/system/media/audio/ui/Cam_Stop.ogg
/system/media/audio/ui/camera_click.ogg
/system/media/audio/ui/Shutter.ogg
/system/media/audio/ui/VideoRecord.ogg
/system/media/audio/ui/VideoStop.ogg
/system/app/BBCAgent/BBCAgent.apk
/system/app/CnnPanel/CnnPanel.apk
/system/app/EasymodeContactsWidget81/EasymodeContactsWidget81.apk
/system/app/GearManagerStub/GearManagerStub.apk
/system/app/GoogleVrServices/GoogleVrServices.apk
/system/app/KidsHome_Installer/KidsHome_Installer.apk
/system/app/KnoxAttestationAgent/KnoxAttestationAgent.apk
/system/app/KnoxKeyChain/KnoxKeyChain.apk
/system/app/Notes/Notes.apk
/system/app/SamsungPassAutofill_v1/SamsungPassAutofill_v1.apk
/system/app/UnifiedWFC/UnifiedWFC.apk
/system/app/UniversalMDMClient/UniversalMDMClient.apk
/system/app/VisionIntelligence2/VisionIntelligence2.apk
/system/app/Weather_SEP10.1/Weather_SEP10.1.apk
/system/app/YahooEdgeFinance/YahooEdgeFinance.apk
/system/app/YahooEdgeSports/YahooEdgeSports.apk
/system/priv-app/AirCommand/AirCommand.apk
/system/priv-app/AirReadingGlass/AirReadingGlass.apk
/system/priv-app/AppsEdgePanel_v3.2/AppsEdgePanel_v3.2.apk
/system/priv-app/AuthFramework/AuthFramework.apk
/system/priv-app/BeaconManager/BeaconManager.apk
/system/priv-app/Bixby/Bixby.apk
/system/priv-app/BixbyAgentStub/BixbyAgentStub.apk
/system/priv-app/BixbyHome/BixbyHome.apk
/system/priv-app/BixbyService/BixbyService.apk
/system/priv-app/BixbyVisionFramework/BixbyVisionFramework.apk
/system/priv-app/BixbyWakeup/BixbyWakeup.apk
/system/priv-app/BlueLightFilter/BlueLightFilter.apk
/system/priv-app/ContainerAgent3/ContainerAgent3.apk
/system/priv-app/DesktopModuleService/DesktopModuleService.apk
/system/priv-app/DexCommunity/DexCommunity.apk
/system/priv-app/EasySetup/EasySetup.apk
/system/priv-app/GameHome/GameHome.apk
/system/priv-app/GearVRService/GearVRService.apk
/system/priv-app/HealthService/HealthService.apk
/system/priv-app/KeyguardWallpaperUpdator/KeyguardWallpaperUpdator.apk
/system/priv-app/KLMSAgent/KLMSAgent.apk
/system/priv-app/knoxanalyticsagent/knoxanalyticsagent.apk
/system/priv-app/KnoxContainerDesktop/KnoxContainerDesktop.apk
/system/priv-app/KnoxCore/KnoxCore.apk
/system/priv-app/KnoxDesktopLauncher/KnoxDesktopLauncher.apk
/system/priv-app/KnoxGuard/KnoxGuard.apk
/system/priv-app/knoxvpnproxyhandler/knoxvpnproxyhandler.apk
/system/priv-app/LedCoverAppCrown/LedCoverAppCrown.apk
/system/priv-app/PreloadInstaller/PreloadInstaller.apk
/system/priv-app/SamsungPass/SamsungPass.apk
/system/priv-app/SecLiveWallpapersPicker/SecLiveWallpapersPicker.apk
/system/priv-app/SecMyFiles2018/SecMyFiles2018.apk
/system/priv-app/SecureFolder/SecureFolder.apk
/system/priv-app/SettingsBixby/SettingsBixby.apk
/system/priv-app/SystemUIBixby2/SystemUIBixby2.apk
/system/container/SharedDeviceKeyguard/SharedDeviceKeyguard.apk

ファイルを保存する際は、権限と改行コードに注意して下さい。(下記の様に設定して下さい。)


2) Taskerの設定

TaskerにTaskを登録します。

スクリプトを走らせて、実行結果を表示するだけの簡単なTaskです。

a) [Code][Run Shell]で"Command"にスクリプトを記入します。


スクリプトは以下をコピペしてください。

 
#!/system/bin/sh
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


システムファイルの拡張子を書き換えますので、"Use Root"をクリックしておきます。

また、実行結果を表示するために、"Store Output In”に"%files"と記入します。


b) 実行結果を画面に表示するために、[Alert][Flash]で"Text"に"%files"と記入します。

そのままですと表示が一瞬しかされませんので、"Long"をクリックしておくとよいでしょう。


削除アプリが多い場合、実行結果を画面上に表示しきれなくなりますので、ファイルにも保存します。

[File][Write File]で保存するファイル名を指定します。

ここでは/sdcard/rename.txtというファイルに保存する様にしています。


Taskを作ったらアプリを作成しておくと便利です。

今回は、システムファイルの拡張子を変更することにより無効化していますが、お好みで削除するような設定にしたり、別のフォルダに移動(バックアップ)する様な設定にしても良いかと思います。
無効化したアプリを元に戻すスクリプト
拡張子を元に戻したい場合は以下のスクリプトを使用してください。

 
#!/system/bin/sh
busybox mount -o remount,rw /system
while read LINE
do
     if [ -f $LINE.old ]; then
mv $LINE.old $LINE
echo " recovered $LINE "
else
echo " CAN'T FIND $LINE "  
fi
done < /data/tool/filelist.txt




2015/10/19

ソウル内バスのリアルタイム運行状況表示アプリ


ソウル内のバス移動の際に便利なアプリのご紹介です。

最近、事務所が移転してバス通勤になりました。

朝の通勤時は利用出来るバスが多く頻繁に来るのですが、帰りは最寄りのバス停からアパートに向かうバスが少ないので、スマホアプリで確認して待ち時間が長いようならバスの本数の多い別のバス停(200メートル程離れています)まで歩いています。

また、空港(仁川・金浦)行きのバスは、本数も少なく、朝晩の渋滞時は遅延するのでこのアプリは必須です。

SeoulBus
https://play.google.com/store/apps/details?id=com.astroframe.seoulbus

指定のバス停に何分後にバスが来るのかをリアルタイムで表示してくれます。

また、頻繁に使うバス停をお気に入りに登録する事も出来ます。


バス停番号のメモ代わりにご紹介しておきます。


2015/10/17

Galaxy Note 5のバッテリーの消費量と省電力設定例


Last Update : 24/Oct/2015

Galaxy Note 5は裏蓋が取り外せず、バッテリーも交換できないので、通知の多い平日はバッテリー使用量が心配だったのですが、細かく設定した結果、丸2日くらいはバッテリーが持つようになりました。

ご参考に当方の設定例をメモしておきます。


■設定(例)

1) WiFi/Bluetooth/GPSは通常はOff

2) 省電力モードを使用

3) alter kernelを使用

(参考)Galaxy Note 5のRoot化(SM-N920S : 韓国SKテレコム版)
http://galaxy-shw-m110s.blogspot.kr/2015/09/galaxy-note-5rootsm-n920s-sk.html

4) 不要なアプリを無効化 / 削除

(参考)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

5) Greenifyを使用

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

6) バックグラウンドでの通信を制限

(参考)モバイルデータ使用時のバックグラウンドでの通信を制限しているアプリ(Galaxy Note 9編)
https://galaxy-shw-m110s.blogspot.com/2018/12/galaxy-note-9_21.html

■「ロック画面の通知」について

Android 5.0(Lollipop)ではロック画面に通知内容を表示することが出来ます。


[設定][ロック画面とセキュリティ][通知][ロック画面の通知]で以下の3種から選択します。

・コンテンツを表示
・コンテンツを非表示
・通知を表示しない

しかし、通知の件数が多い場合、この機能を使用すると、バッテリーの消費が異常に多くなります。

[設定][バッテリー][バッテリーの使用量]でアプリ毎のバッテリー使用量を確認してみると、通知の件数が多い場合(当方の場合、30-50件/日程の通知があります)、通知の表示件数が多いアプリの「非スリープ時間」が異常に長くなっています。

頻繁に通知があると、スリープ状態に入れなくなる様です。

通知の件数が多い場合は「ロック画面の通知」は使用しない(「通知を表示しない」に設定)方が良いでしょう。



2015/10/16

Outlookへの新規メール受信をIFTTT/Pushbulletを使ってAndroidにPush通知する


Last Update : 24/Oct/2015

Outlookへの新規メール受信時にAndroid端末にPush通知を送る方法の例です。

以前、Node.js経由でPushbulletに通知を送信する方法を書きましたが、今回は、IFTTT経由でPushbulletにトリガーを送る方法を考えてみました。

Outlookのマクロに簡易スパムフィルタとメールでの通知のリモートOn/Off機能を追加しています。

IFTTTにトリガーメールを送りますので、Gmail等にメールを転送するのとあまり変わらないのですが、Outlookのマクロのスタディも兼ねて作ってみましたので、興味のある方はご自分の用途や環境に合わせてアレンジしてみてください。

(参考)
Pushbullet APIでOutlookへの新規メール受信をAndroidにPush通知する
http://galaxy-shw-m110s.blogspot.kr/2014/12/pushbullet-apioutlookandroidpush_5.html
想定される環境
以下の様な環境下での使用を想定しています。

・職場のメールはOutlook(Exchangeサーバー)でProxy環境下。
・Outlookの仕訳ルールでの自動転送はサーバー側でブロックされている。
・Gmail等のメール、SNS、PushbulletへのアクセスはProxyで撥ねられる。
・モバイル端末からVPNやセキュアなクライアントアプリを利用したメール閲覧は許可されている。
・モバイル端末のクライアントアプリへのメールのPushサービスが提供されていない。

PCのバックグラウンドで動作しますので、PCは常に稼働したままで、Outlookも常に起動したままにしておく必要があります。
全体の動作の流れ
・Outlookのマクロで新規メール受信時に表題・送信者名・本文(一部)を取得
・スパム確認(送信者/表題)
・トリガーメール作成
・特定の送信者/表題のメールを受信した場合は通知のOn/OFFを切替え結果を通知
・IFTTTにトリガーメールを送る
・トリガーを受信したIFTTTからPushbulletにPush通知を送る
必要なもの
・ Outlook用マクロ(詳細下記)
・ リモート操作用ファイル 3種類
・ スパムフィルタ用ファイル 2種類
・ IFTTTアカウント(https://ifttt.com
・ Pushbulletアプリ(Android側:https://play.google.com/store/apps/details?id=com.pushbullet.android
Outlook用マクロ
新規メール受信時に自動起動し、受信メールから表題・送信者名・本文を取得して加工し、IFTTTにトリガー(メール)を送るマクロです。

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

外部のテキストファイルに記述した送信者のメールアドレスや表題の先頭部分(デフォルトは5文字)との照合を行う簡易スパムフィルタ機能や、特定の送信者からの特定の表題のリモートメールで通知のOn/OffしてPush通知先にOn/Off状態を通知する機能も追加しています。

[動作内容]

1) 受信メールから表題や送信者情報を取得
2) 送信者名と送信者のEmailアドレスの処理
 ・送信者名と送信者のEmailアドレスが同じ場合はEmailアドレスのみ表示
 ・送信者のメールアドレスがEmailの場合は送信者名とEmailアドレスの両方を表示
 ・送信者のメールアドレスがExchangeの場合はSMTPアドレスを取得
3) スパムフィルタ
 ・スパム確認(送信者のEmailアドレス)
 ・スパム確認(表題)
4) メッセージ作成
5) 通知のOn/Offのリモート操作
 ・特定の送信者/表題のメールを受信した時にマクロをOn/Offし通知先に通知
6) 通知のOn/Off状態の確認
7) 表題と本文を加工して送信
 ・本文から余計な空白と改行コードを削除
 ・本文の文字数を制限
 ・通知メールを送信

 
'Outlook受信メールプッシュ通知マクロ(IFTT版) Ver 1.30
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)
'
'[ユーザー設定項目]
'
'トリガー送信先アドレスを指定
Const ForwardToAddress = "trigger@recipe.ifttt.com"
'
'マクロ中断/再開用リモート操作メールの送信者アドレスを指定
Const MailStopAddress = "XXXXXXXX@gmail.com"
'
'設定ファイルのPATHを指定
Const FilePATH = "C:\環境に合わせて書き換えてください\IFTTT\"
'
'[変数]
'
Dim strFileName As String
Dim fwMail As MailItem
Dim i As Integer
Dim buf As String
Dim strSpamFile1 As String
Dim strSpamFile2 As String
Dim strSpamList1 As String
Dim strSpamList2 As String
Dim strSenderName As String
Dim strSenderEmailAddress As String
Dim strSubject As String
Dim strBody As String
Dim strShortBody As String
Dim strRepBody As String
Dim strShortSubject As String
Dim strStatusFile As String
Dim strStatus As String
Dim strStartPushFile As String
Dim strStopPushFile As String
'
strSpamFile1 = FilePATH & "spamlist.txt"
strSpamFile2 = FilePATH & "keyword.txt"
strStatusFile = FilePATH & "Push_is_On_Now.txt"
strStartPushFile = FilePATH & "Start_Pushing.bat"
strStopPushFile = FilePATH & "Stop_Pushing.bat"
'
'受信メールの自動仕分けルールや迷惑メールフィルタと併用した場合のエラー対策
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
 Else
 '送信者のメールアドレスがEmailの場合は送信者名とEmailアドレスの両方を表示
  If InStr(strSenderEmailAddress, "@") Then
     strSenderName = strSenderName + "<" + strSenderEmailAddress + ">"
  Else
 '送信者のメールアドレスがExchangeの場合はSMTPアドレスを取得
     strSenderEmailAddress = _
     objMail.Sender.PropertyAccessor.GetProperty("http://schemas." _
     & "microsoft.com/mapi/proptag/0x39FE001E")
  End If
 End If
'
'[スパムフィルタ]
'
'スパムリスト(送信者のEmailアドレス)の取込
Open strSpamFile1 For Input As #1
Do Until EOF(1)
 Line Input #1, buf
 strSpamList1 = strSpamList1 + buf
 strSpamList1 = Replace(strSpamList1, vbCrLf, "")
Loop
Close #1
'
'スパムリスト(表題)の取込
Open strSpamFile2 For Input As #1
Do Until EOF(1)
 Line Input #1, buf
 strSpamList2 = strSpamList2 + buf
 strSpamList2 = Replace(strSpamList2, vbCrLf, "")
Loop
Close #1
'
'表題の先頭部分を抽出(デフォルトは5文字)
strShortSubject = Mid(strSubject, 1, 5)
'
'スパム確認(送信者のEmailアドレス)
If InStr(strSpamList1, strSenderEmailAddress) > 0 Then
 Exit Sub
Else
End If
'
'スパム確認(表題)
If InStr(strSpamList2, strShortSubject) > 0 Then
 Exit Sub
Else
End If
'
'[メッセージの作成]
'
'受信メールをOFTとして保存しOFTから新規メッセージを作成
 strFileName = Environ("TEMP") & "~forward.oft"  '受信メールをOFTとして保存
 objMail.SaveAs strFileName, olTemplate
 Set fwMail = Application.CreateItemFromTemplate(strFileName)    'メッセージを作成
'
'元メールから宛先を削除
 With fwMail.Recipients
  For i = .Count To 1 Step -1
          .Remove i
  Next
 End With
'
'元メールから添付ファイルを削除
 With fwMail.Attachments
  For i = .Count To 1 Step -1
          .Remove i
  Next
 End With
'
'トリガー送信先アドレスを宛先に設定
fwMail.To = ForwardToAddress
'
'[通知のOn/Offのリモート操作]
'
'特定の送信者から特定の表題のメールを受信した時にマクロをOn/Offし通知先に通知
'
If strSubject = "通知中断" Then
 If strSenderEmailAddress = MailStopAddress Then
    'バッチファイルを起動
    Shell strStopPushFile, 0
    '通知の件名を作成
    fwMail.Subject = "リモート操作によりPush通知を中断しました。"
    '本文を空白に
    fwMail.Body = ""
    '通知を送信
    fwMail.Send
    Exit Sub
 Else
 End If
Else
End If
'
If strSubject = "通知再開" Then
 If strSenderEmailAddress = MailStopAddress Then
    'バッチファイルを起動
     Shell strStartPushFile, 0
    '通知の件名を作成
    fwMail.Subject = "リモート操作によりPush通知を再開しました。"
    '本文を空白に
    fwMail.Body = ""
    '通知を送信
    fwMail.Send
    Exit Sub
 Else
 End If
Else
End If
'
'[通知のOn/Off状態の確認]
'
strStatus = Dir(strStatusFile)
If strStatus = "" Then
 Exit Sub
Else
End If
'
'[表題と本文を加工して送信]
'
'本文から余計な空白と改行コードを削除
strRepBody = Replace(strBody, " ", " ")
strRepBody = Replace(strRepBody, vbCrLf, " ")
strRepBody = Replace(strRepBody, "  ", " ")
'
'本文の文字数を制限(デフォルトは100文字)
strShortBody = Mid(strRepBody, 1, 100)
'
'件名に件名、送信者名、本文を表示
fwMail.Subject = strSubject & " " & strSenderName & " " & strShortBody
'
'本文を空白に
fwMail.Body = ""
'
'通知メールを送信
fwMail.Send
'
ErrorTrap:
'
End Sub
 

リモート操作用ファイル
特定の送信者(マクロ内で指定)からの特定の表題(通知中断/通知再開)のリモートメールで通知をOn/Offする際に使います。

PC上でバッチファイルをクリックして通知をOn/Offする事も出来ます。

以下の3個のファイルをマクロ内で指定したフォルダ内に保存しておいて下さい。

1) Stop_Pushing.bat

cd/
cd C:\環境に合わせて書き換えてください\IFTTT\
ren Push_is_On_Now.txt Push_is_Off_Now.txt

2) Start_Pushing.bat

cd/
cd C:\環境に合わせて書き換えてください\IFTTT\
ren Push_is_Off_Now.txt Push_is_On_Now.txt

3) Push_is_On_Now.txt

このファイルは中身は空で構いません。
スパムフィルタ用ファイル
以下の2つのテキストファイルをANSI形式で保存してマクロ内で指定したフォルダ内に置いて下さい。

1) spamlist.txt

Androidに通知を送る必要のないメールの送信者のメールアドレスを記入します。

送信者名等のメールアドレス以外の記述や改行等が含まれていても問題ありません。

2) keyword.txt

Androidに通知を送る必要のないメールの表題を記入します。

但し、表題の冒頭部分(デフォルトは5文字)しか照会しませんので、注意して下さい。
IFTTT側の設定
IFTTTへのトリガーメールでPushBulletに通知を送るように設定しておきます。


当方の環境下では以下の様に"Message"に"Body"を指定してもPushbulletには本文は送られませんので、必要な情報は全て表題として送信するようにOutlookのマクロ側で加工しています。


通知のOn/Off切り替え用のショートカット
通知のOn/Offをリモート操作で設定するのメール(定型文)は以下のアプリを使って簡単に作成・送信出来るようにしています。


定型文+アプリ起動(定型文メール作成)

判りやすい様にTaskerでアイコンと名称を変更したランチャを作成して使用しています。


Tasker(カスタマイズツール)


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