2014/08/29

Googleスプレッドシートのランニング記録用シートをTaskerで作成したショートカットから呼び出す


Last Update : 02/Sep/2014

ランニングの記録をつけて統計をとってみようと思ったのですが、当方のやりたい事に合ったアプリが見つかりませんでしたので、Googleスプレッドシートで記録・集計用シートを作成し、Android端末からはTaskerで作成したショートカットアプリを使って開けるようにしてみました。
やりたい事
・ランニング時以外は活動量の計測はしないので活動量計は不要。
・スマホを持ってランニングはしない。
・決まったルートを走るのでGPSでの距離の測定は不要。
・ランニングの結果(距離と時間)だけを集計したい。
・PCとスマホの両方からデータの記録と集計結果の閲覧をしたい。
シートの例(Googleスプレッドシート)
今回は以下の様なスプレッドシートを作成してみました。

1)データ入力用シート


データ入力用シートを月毎に別々のタブに作成し、当月のタブを一番左に置いておくと、ファイルを開く際にはそのタブから開くので、ランニング結果のインプットを迅速に行えます。

古い月のシートはタブをドラッグして右端に移動しておくと邪魔になりません。

このシートはデータ入力用ですので、走行回数、距離、時間、平均速度だけを集計・表示しています。

2)進捗度表示シート


目標値(走行距離)の達成度をデイリーで表示しています。

2014年8月末時点では、Android側では縦軸が%表示されなかったり、凡例が正しく表示されなかったりする軽微な互換性の問題があります。

3)目標値との比較シート(月別)


各月の目標値(距離、時間、速度)の達成度をグラフで表しています。

4)集計用シート


このシートで月毎の各項目の合計値や累計値、目標値の達成度を集計しています。

月毎の目標値もこのシートで設定します。

5)累計値シート


累計値をグラフィカルに表示しています。

2014年8月末時点ではAndroid端末側のGoogleスプレッドアプリでは表示出来ません。(ブラウザからは観ることが出来ます。)

通常の棒グラフでしたらAndroid側でも問題なく表示出来ます。


ショートカットの作成(Tasker)

1)シートのURLの取得

端末でGoogleドライブアプリを起動して該当のシートを長押しすると選択メニューが開きますので、[リンクを送信]で任意のアプリのメール作成画面等にURLを一旦貼り付け、それを長押ししてコピーし、クリップボードへ取り込みます。


2)Taskへの登録

Taskerの新規Task追加メーニューから[Net][Browse URL]で登録画面を開き、先程コピーしたURLを貼り付けます。



アイコンはネットで入手したものを使いました。

初回起動時のみ、アプリケーション選択画面になりますので、[スプレッドシート][毎回]を選択してください。


上手く動いたらアプリ化します。
問題点
2014年8月末時点ではPC版とAndroid版で互換性に多少問題がありました。

・Android上でレイアウトが崩れる。
・一部のグラフがAndroid版では表示されなかったり表示に不具合があったりする。(上記「累計値シート」「進捗度表示シート」の項参照。)
・作成者本人がファイルを使う場合はセルの保護が出来ない。

また、グーグルスプレッドシートを利用するとバッテリーの消費が激しいのも難点です。



2014/08/22

SKT Hidden MenuへのショートカットアプリをTaskerで自作


以前韓国版Galaxy S3 LTE用に作成したSKT Hidden Meun(隠しメニュー)へのショートカットアプリがGalaxy S4 LTE-Aのファームウェアのアップデイトで動作しなくなったので、Taskerで対応版を作成してみました。

(参考)韓国版Galaxy S3 LTEのHidden Menu表示アプリ(SKT Hidden Menu +)
http://galaxy-shw-m110s.blogspot.kr/2012/08/galaxy-s3-ltehidden-menu.html

Tasker
https://play.google.com/store/apps/details?id=net.dinglisch.android.taskerm

従来版はアプリからActivityを直接叩いてHidden Menuを開いていたのですが、ファームウェアのアップデイトで塞がれてしまいましたので、Secret Codeとパスワードを自動で入力する方式に変更しました。

(参考)Galaxy S4のSecret Code
http://galaxy-shw-m110s.blogspot.kr/2013/05/galaxy-s4secret-code.html



SKTの設定メニューへのショートカットですので、他の機種では動作しません。(同じ韓国版のGalaxy S4 LTE-Aでも、KTやLGU+の機種では動作しません。)

日本に帰国した際や海外でプリペイドSIMを使用する場合にLTEやWCDMAのバンドを強制的に設定した場合に使用しています。

【作成方法】

[App][Launch App][All][電話]
[Input][Type]に「319712358」と登録(Secret Code)
[Input][Type]に「996412」と登録(SKテレコムのPassword)






2014/08/21

LTE/3Gの切り替えメニューへのショートカットアプリをTaskerで自作


韓国版Galaxy S3 LTE用に作成したLTE/3Gの切り替えメニューへのショートカットアプリがGalaxy S4 LTE-Aのファームウェアのアップデイトで動作しなくなりましたので、Taskerで対応版を作成してみました。

(参考)韓国版Galaxy S3 LTE用LTE/3G切り替えアプリ(LTE/3G Setting)
http://galaxy-shw-m110s.blogspot.kr/2012/08/galaxy-s3-ltelte3g.html

Tasker
https://play.google.com/store/apps/details?id=net.dinglisch.android.taskerm

[設定][その他ネットワーク][モバイルネットワーク][Data network mode]へのショートカットです。


SKTの設定メニューへのショートカットですので、他の機種では動作しません。(同じ韓国版のGalaxy S4 LTE-Aでも、KTやLGU+の機種では動作しません。)

LTE網でカバーされていない地域や3G専用のSIMを使用する場合(海外でプリペイドSIMを使用する場合等)に利用しています。

【作成方法】

[App][Launch App][All]
[Mobile Networks]を長押し
[DataNetworkMode]を選択



Google標準のEmailアプリとExchangeアプリをユーザアプリに改変して他機種で使える様にする



Nexus 7のGoogle標準Emailアプリ(EmailGoogle.apk)とExchangeアプリ(Exchange2Google.apk)をGalaxyにユーザアプリとしてインストール出来るように改変してみました。

【背景】

当方の環境では、Galaxy S4 LTE-A(shv-e330s、SKテレコム版、NG9)の標準Emailアプリを使ってExchangeサーバーに接続しようとすると、設定時にエラーとなってしまいます。

Galaxyシリーズにはサムスンが改変したEmailアプリ(SecEmail_J.apk)とExchangeアプリ(SecExchange.apk)が搭載されていますが、これらのアプリのExchange Serverとの接続に問題がある様です。

複数のアプリと機種、OSのバージョンで検証した結果、当方の環境では、設定画面の「セキュリティの種類」の項目に「SSL/TLS(証明書をすべて承認)」という選択肢が無く「SSL/TLS」しか選択出来ない場合は設定時にエラーとなる様です。


幸い、Nexus 7(2012 WiFiモデル Android 4.4.4 KTU84P)の標準Emailアプリ(EmailGoogle.apk)とExchangeアプリ(Exchange2Google.apk)にはこの「証明書をすべて承認」という選択肢があり、Exchange Serverにも問題無く接続出来ますので、これらのアプリをGalaxyにユーザアプリとしてインストール出来るように改変してみました。

【作業の流れ】

・必要なファイルの準備
・odexファイルを展開
・classes.dexを作成
・deodexファイルを作成
・署名

【準備】

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

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.3.jar
smali-2.0.3.jar

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

3)7Z

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

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

4)Emailアプリ/Exchangeアプリとodexファイル

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

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

/system/app/EmailGoogle.apk
/system/app/EmailGoogle.odex
/system/app/Exchange2Google.apk
/system/app/Exchange2Google.odex

5)"/system/framework/"の中身

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

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

6)APK Multi-Tool(署名用)

APK Multi-Tool
http://apkmultitool.com/

【deodexファイルの作成】

1)odexファイルの展開

まず、Emailアプリのodexファイルを展開します。

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

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

今回は"/desktop/deodex/email/"というフォルダに展開しました。

java -jar baksmali.jar -d system/framework -x EmailGoogle.odex -o email

2)classes.dexの作成

コマンドプロンプトから以下を実行してclasses.dexを作成します。

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

3)deodexファイルの作成

コマンドプロンプトから以下を実行してdeodexファイルを作成します。

7z a -tzip EmailGoogle.apk classes.dex

"/desktop/deodex/"にdeodex化されたEmailGoogle.apkが作成されます。

4)Exchangeアプリも同様にdeodex化

同様に、以下を実行してExchange2Googleのdeodexファイルを作成します。

java -jar baksmali.jar -d system/framework -x Exchange2Google.odex -o exchange

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

7z a -tzip Exchange2Google.apk classes.dex

"/desktop/deodex/"にdeodex化されたExchange2Google.apkが作成されます。

【署名】

deodex化したファイルに署名してユーザーアプリとして端末にインストール出来るようにします。


1)APK Multi-Toolrの"/place-apk-here-for-modding/"フォルダ内に、deodex化したEmailGoogle.apkを置きます。

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

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

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

5)"Select compression level for apk's"("21"+[Enter])を選択します。

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

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

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

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

8)"/place-apk-here-for-modding/"フォルダ内にsignedEmailGoogle.apkが出来ますので、これをEmailGoogle.apkにリネームして端末の任意の場所にコピーし、ファイラーからクリックしてインストールします。

同様に、Exchange2Google.apkにも署名をして、端末にインストールします。


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公式アプリの物をそのまま使用しています。