zSuperRecorderのご紹介gitデプロイテスト文字列 zSuperRecorderはTelRecProの開発経験を生かし、全く別のアプローチで作り直したAndroid通話録音アプリです。何故作り直したかと言うと、TelRecProを開発したときには解らなかったAndroidシステムの癖(仕様)や各メーカーの癖がある程度解ったので、その癖にに対応するために作り直しました。 TelRecProはAndroidのサービスプログラムをメインに全ての動作がバックグランドで常駐している稼働方式を採用しており、開発当初、電話ア プリの裏で稼働させるので、その方法がベストだと思ったのですが、AndroidOSが2.1、2.2、2.3、4.0と上がるにつれてAndroidの システム自体のタスク管理機能が向上して、直ぐにスリープ状態にさせられる様になってきました。 これは、バッテリーを維持するためのAndroidシステム自体の機能強化ですが、TelRecProはメモリーに常駐していても、着信の監視と通知エリ アへのアイコン表示しかしていないので、定期的な動作は行っていない為、タスクが完了してるとみなされて、システムが直ぐにスリープ状態にしてしまいまし た。 そこで、サービスプログラムをメインにしているとシステム自体が動作しなくなると言う欠点を回避すべく、録音中は定期的に自分自身をメモリーに復帰するような仕組みをいれました。 zSuperRecorderも同様に録音自体はバックグランドで動作させているので録音専用のサービスプログラムを稼働させているのですが、一部の端末で終了させられるので、今度は定期的にカウント情報を書き込むことで回避しています。 また、通話録音はもともと全てのAndroidOSに搭載されている「MediaRecorder」を利用しており、zSuperRecorderも TelRecProもOSに元々搭載されている録音機能のスイッチをいれるだけで、そのスイッチを入れるUIアプリと言う事になります。 しかし、ここが通話録音出来る端末と出来ない端末の分かれ道で、Google提供のAndroidOSの全てのバージョンのMediaRecorderに はバグがあり、Googleは修正しないので、各メーカーはそれを認識して自社端末に搭載するときに自社のエンジニアに修正させて搭載していることになり ます。 日本国産端末であれば、「伝言メモ」を実現する為には受話音声を録音する必要があり、各メーカーのエンジニアもAndroid搭載の MediaRecorderを使って伝言メモ機能を実現している様で、伝言メモ機能を有効にするには元々のMediaRecorderのバグを修正する必 要があり、伝言メモ搭載端末は通話録音出来る可能性が高いと言う事になります。 XPERIA系は伝言メモ機能が実装されてないのでMediaRecorderのバグが放置されたままとなり受話音声を正規の命令で録音出来ないのです。 この為、正規の録音方法である「VOICE CALL」と言う定数が利用出来ず、マイクでの通話録音となるため、受話音声のレベルが著しく不安定になっているのです。 また、XPERIAはAndroid2.3から「ノイズ抑止機能」が搭載されて、マイクで録音出来た受話音声をさらに打ち消してしまうので受話音声が非常に小さくなってしまいます。 そこで、XPERIA系(SO-01B除く)は送話用のマイクを塞ぐことで打ち消す音声を回避出来るので録音したレベルそのままで録音出来るのでは無いかと想定しています。 2012夏モデルのXPERIA SX Android4.03搭載端末ではこの問題が回避され、ようやくVOICE CALLも使える様になったので、Bluetoothでの通話録音も可能になるのでは無いかと思います。(スマホラウンジにて通常の通話録音は確認しまし た) また、Arrows系の端末には伝言メモが搭載されているにもかかわらず、正常に動作しないのは、全く別の要件で、ARROWSは他のメーカーには無い、電話機能をかなりカスタマイズしているからだと思います。 はっきりボイスとかゆっくりボイスとか、非通知の着信区分なども出来る高機能な制御を独自APIで行っている様です。 Androidの仕様書では非通知着信、通知不可能、電話ボックスからの着信の違いを区分けする事が出来ませんが、ARROWSにはそれぞれを個別に着信拒否する機能が実装されています。 この事により、着信に関するAndroid標準の機能をカスタマイズしており、この時点でメーカー独自仕様となってしまい、公開されている世界標準の仕様書通りでは上手く行かないと言う事になります。 独自機能を搭載するのはメーカーの勝手ですが、標準の仕様を逸脱する様な変更は公開するべきだと思いますがどうなのでしょうか。 いずれにしても、テストしたところ、出来そうな感じで、VOICE CALLは修正されているので出来そうなのですが、実機が手元に無いので検証出来ていません。 また、Developerフォンと言われるGoogle監修の端末には修正されてないAndroidがそのまま実装されているので、まず、通話録音出来るアメリカ製の端末は皆無では無いかと思います。 スマホラウンジ(docomo)での検証に偏りますが、それは私がドコモユーザと言う事もあり、au、Softbankなどは自由にダウンロード出来る端 末を店頭に置いている機会が少なく、ほぼロックされていたりと、ぶらっと検証する事が困難と言うことで、ドコモメインになっています。 そこで、通話録音をキーに、端末を検証する事が多く、ここに着目していると、端末の出来不出来が良く解ります。 これだけ、ハイテクの時代に未だに標準機能で通話録音出来る機能を搭載しない事を不思議に思ったことは無いでしょうか。 ましてや、スマホなんかは私が提供しなくても、優秀なメーカーのエンジニアが自社端末の機能に入れていても不思議ではないし、インターネットでの無料通話 アプリなども、そもそもアプリでの通話を実現しているにもかかわらず、通話録音出来ません。 Skype等に代表されるようなインターネット通話は全てのアプリが録音するために裏でMediaRecorderを初期化すると切断されたり無音になるようにしています。 私が通話録音アプリを開発する動機にもなっているのですが、何故メーカーが自社端末に搭載しないのか、出来るのであれば自分で作るしか無いと思ったからな のですが、色々と調べるとアメリカの法律がコンプライアンス上の問題でのし上がってきました。 おかげで、私のような一人でちまちまAndroidアプリを提供しているDeveloperが大手の手が出せない所で暗躍できている事になりますが、法律を犯している訳ではありませんので誤解の無いように。
まぁ再生はかろうじて出来るのですが、相手側に音声が伝わらない様になるのでAndroidの仕様上無理があるようです。 |
||||||||||||||||||||||||||||||||||||
画面回転時のレイアウト |
メイン画面zSuperRecorderの起動画面です。横画面対応も万全です。 画面内のこの部分をタップすると手動で録音を開始します。 ボイスレコーダーとしての利用が可能です。 メイン画面を表示してボイスレコーダー機能を使う場合、録音中は画面回転が止まります。 録音中に画面回転してしまうと、録音がシステムにより中断され正常なファイルとして継続出来なくなるため録音中のみ画面回転出来ません。 長時間録音の場合、ボイスレコーダーでのテストは画像の通り5時間オーバーでもそのまま録音出来ていたので通話録音でも同様と思っていましたが、GALAXY S2 LTEでは40分程度までしか録音出来ませんでした。 そこで、定期的にカウンターを内部的に稼働させることで長時間の通話録音にも対応しています。(V2.6.3以降)最新バージョンをインストールする事で長時間の通話録音にも対応しています。 XPERIA SO-01Bの場合は、対策しなくても長時間の通話録音が出来ていたので問題ないと思います。(一部の機種では通話録音の場合40分程度で落ちる可能性が あり、5分毎にカウントするようにしてメモリー落ちを回避しています。) 録音開始時の経過時間表示ですが、RemoteViewで実現しているウィジットとタスクバーは止めるとリセットされてしまうのですが、メイン画面のカウ ンターはRemoteViewでは無いので経過時間をそのまま止める仕様にしています。 次の開始で0からスタートします。リセットするようにはしていませんが仕様です。 手動録音のトリガーは3つあります。 タスクバーを下げて通知領域のメニューをタップすると録音を開始する方法と、デスクトップのウィジットをタップする方法があります。 ※ただし、仕様上録音を開始したトリガーで終了させてください。 MediaRecorderの受け渡しの関係で、起動したセッションからしか終了させない様にしています。 手動録音を把握するために、リストには電話番号は表示しませんが、ファイル名には「11111...」「10101...」「00000...」と言う電話番号の代わりにステータスを登録しています。 順番でウィジット、タスクバー、メイン画面となっております。 また、番号非通知や通知不可能などの電話番号は「999」となります。 このボタンはファイルリスト画面を表示するボタンです。 このボタンは設定画面を表示するボタンです。 設定画面は端末のメニューボタンを押しても表示します。 このボタンは設定内容の抜粋した内容をメール文章として私にメールを送るための画面です。 ボタンを押しただけでは何も送信しないので、現状の設定を確認する為の画面を表示するものです。 元々、私がデバッグするために用意していた画面ですが、それをそのまま問い合わせ用の画面として流用する事にしています。 と言うのも、問合せの際に全く機種名を記載せずに連絡を頂くの で、まず、機種を特定するための無駄な返信メールをやりとりする事になり、合理性を重要視する私にとって苦痛の何者でもありませんので、ここからメールを いただければ、一通りの設定と、端末情報も最初から取り込んでいるのでストレス無く問合せに集中できますのでご理解願います。 この機能は、端末の個人情報を取得する為の物ではありませんが、端末から機種情報とキャリア、国、メーカー、OSバージョンを取得します。 送信時に編集して送ることも出来ますので、送信したくない項目があれば削除してください。 なお、問合せに必要な内容を削除して送ってきた場合は再度情報を要求する事になりますので問合せに必要な内容は残して下さい。 |
|||||||||||||||||||||||||||||||||||
|
ファイルリストの取り扱い方法ファイルリストは縦には可変で、キャッチフォンが入った場合は図の様に着信順でリストが構成されます。これは、他の通話録音アプリには無いzSuperRecorder独自の目玉機能です。 録音途中でキャッチが入ってもそのまま録音を継続しますが、キャッチが入って直ぐに切った場合でもリストは複数行になるのでご了承願います。 最上部は着信のあった日時で録音開始日時となります。 次に、電話帳に登録があれば登録名を、無ければ「電話帳未登録」として表示します。 次は電話番号で非通知の場合は「999」と表示されます。 次は録音フォーマットでAMR形式か3GP形式かアイコンを見れば解るようにしています。また、ファイルサイズを表示していますが、999,999バイト以上のファイルはByte表示が消えるのでリストのレイアウトが崩れないようにしています。 最後は再生時間で、保存前にMediaPlayerにセットして取得しているので正確な再生時間を表示しています。TelRecProではファイルリスト を保存しているファイルから直接作成し、そのときに再生時間も取得していたので保存しているファイル数や端末のパフォーマンスで表示に時間がかかります が、zSuperRecorderではDBを利用するので保存時にサイズや容量をチェックしてその情報を保存するため、端末のパフォーマンスやファイル数 に影響することはありません。 一般的にファイルリストと言うと1cm位の幅でと言う感じですが、zSuperRecorderではカード型リストを採用しておりますのでカードリストと言う認識でお願いいたします。 リストの検索ボックスをタップすると録音されている登録名リストを表示します。 リストをタップすると,簡単に登録名で絞り込みを行えます。 この時、名前で検索するか、番号で検索するか迷ったのですが、しばらく使って番号で絞り混む様にしました。 と言うのも、同じ登録名で複数の番号を登録している場合、別々に絞り込めた方が私の場合都合が良かったのでそうしました。 番号で検索するようにすると、電話帳未登録でも番号毎に絞り込めるので都合が良かったのでそうしています。 なお、ボイスレコーダーでの録音はリスト上タスクバーでの録音、ウィジットでの録音、メイン画面での録音と番号を分けていますが、名前で検索するようにしました。 リスト表示中に端末のメニューボタンを押すと、リストの並べ替えメニューが表示されます。 並べ替えは録音日時をキーに昇順、降順とトグルで切り替わります。 また、送話のみ、受話のみ、ボイスレコーダーのみのリストもメニューを押せば直ぐに絞り込まれます。 GROUPメニューは、リストを登録名で並べ替えるメニューです。 また、検索エリアにリスト内の数値や文字を入れる部分一致検索でリストを絞り込むことが可能です。 カードを長押しするとコンテキストメニューが表示されます。 コンテキストメニューではファイルの削除や共有メニューが利用出来ます。 ファイルの保護機能は、間違ってファイルを削除しない為にリスト上から削除出来なくするための保護で、ファイルを直接削除する事は可能なのでご注意願います。 ファイル保護を行うと赤のロックされた鍵アイコンに変わります。 ファイル削除/一括削除は選択したカードの削除か、リスト全ての削除を行う機能を利用出来ます。 リスト全削除は選択したファイルとは関係なく保護されていない保存されている全てのファイルを削除します。 DB登録漏れ確認では、録音中に強制終了等が発生して保存フォルダーにファイルは作成されたが、リストに表示されずに再生出来ない場合に利用して下さい。 DBに登録されてないファイルがあれば、「NG」と表示されたリストが出来るので直ぐに確認可能です。 NGファイルをタップすると、登録メニューが表示され、「発信録音として追加」「受信録音として追加」「ボイスレコーダーとして追加」と3種類の登録豊富 尾があるので適宜選択して下さい。ファイル名にステータスを残してないので判定できずご不便をおかけする仕様です。 ファイル選択削除は、最初は保護機能があるので余り必要とは考えていなかったのですが、アプリ開発中デバッグするときに、リストがごちゃごちゃになってし まうのが面倒だったので作ったのですが、それをそのまま機能として利用出来る様にしています。 選択削除で削除出来るのはリストに登録されているファイルのみで、保護機能を判定して削除します。 先のDB登録漏れファイルは削除出来ないので選択削除から削除する場合はDBに登録してから実施して下さい。 なお、そのままDBのリストと照合せずにファイルのみを直接削除する事も可能です。 直接削除する場合、DBと照合しないので保護していても削除するのでご注意願います。 なお、リストにあるファイルを直接削除すると、リスト上でファイルを再生出来なくなりますが、それ以外の問題ありません。 通話ログとしてリストの情報は残し、ファイルだけ削除したいと言うご利用方法もあるのかなぁとは思います。 ファイル共有では録音ファイルをメールなどに添付する時にご利用下さい。 送信する情報(Intent)はタイトル、登録しているメールアドレス、テキストには録音開始日時、電話番号、登録名とし、添付ファイル名を送信します。 特にEvernoteへ送信する事を意識して作成しているので、Evernote上でPCと共有する場合ファイルフォーマットをAMR(後述)にしておく ことを推奨します。(ファイル容量が3GPより小さいうえ、Evernote内で再生可能) ※これもデバッグ用の隠し機能ですが、ファイルリストが空の場合でもタイトルをタップするとこでコンテキストメニューを表示する事が可能です。 全ての画面で画面回転の対応は出来ておりますので、各リストも横回転用のレイアウトを用意しています。 Androidアプリとして回転に追従するのは必須と考えており、各ダイアログを表示中に回転しても、そのままダイアログを表示したまま横画面に切り替わります。 これは、ごく当たり前の遷移ですが、正しくプログラムを組まないと、ダイアログが消えて画面が回転します。 良くある、参考書のダイアログ表示方法にも間違いが多く、私の手元の参考書は全て間違ったダイアログを表示する方法が記載されています。 その方法で表示すると必ずメモリーリークします。(ダイアログを表示したまま画面を回転させた場合、ダイアログが消えるアプリ) この回避のために、画面を回転させない様にしているアプリも見かけますが、スマホでは回転が要件なので、無視する事は要件の一つを満たさないことになるので、エンジニア的にこだわっている部分です。 実使用では画面の回転を止めて利用していますが、他人のアプリを評価するとき、ちゃんと組まれているかどうか、確認する為に、画面を回転させるようにして、テストして問題なければ利用させていただいています。 たとえGALAXY S2 LTEでもスマホは非力なのでメモリーの処理に気をつかわないと、端末の調子が悪くなってしまうので、こだわった方が良いと思います。 zSuperRecorderでは各状態で回転しても問題ないのでご安心下さい。(私がこだわっているので) また、電話帳から登録名を電話番号で検索する方法がAndroid1.6から2.1に変わったときに変更されました。 OSのバージョン判定でロジックを切り替えれば1.6のユーザでもアプリを利用出来るのですが、実質1.6のユーザは希少となっているので対応していません。 |
|||||||||||||||||||||||||||||||||||
ウィジットの表示は端末によって違いがあったりお使いのホームアプリでも違うのでそれぞれの端末にあった方法で表示させて下さい。 一般的にはデスクトップ画面の長押しで選択できる様になるはずです。 安定して動作させるために、時折リセットウィジットをタップしておくと幸せになれると思います。 Androidでは様々な要因で複合的にシステムが稼働しています。 知らずに、フラグの処理が失敗している場合もあり、デバックしきれていない部分が絡んだときにフラグをリセット出来てない可能性も否定できません。 運用でのご協力をお願いいたします。 |
ウィジットzSuperRecorderには便利なウィジットが搭載されています。ただし、SDカードへアプリを移動していた場合は使用できません。
きになる場合は、ボイスレコーダーウィジットをタップしてタイマーを起動させ、再びタイマーを停止する事でメモリーから待避します。 基本的にトグル系のウィジットはメモリーに残す必要は無いのでメモリーに残らない処理をしています。 一部、フラッシュライト系のアプリでトグルウィジットなのにメモリーに残り続けるアプリがあってどう考えてもそういう怪しいウィジットは使わない方向な人なので、自分のアプリは綺麗に処理するようにしています。 |
|||||||||||||||||||||||||||||||||||
保存確認のトーストメッセージ 手動録音ボタン配置方法 最後に離した位置に表示されます。 Google翻訳での貼り付けで ローカライズメニューを作成 しているので、変な翻訳になって いると思います。 変なところは教えて下さい。 |
設定メニューかなり設定項目が多いですが、デフォルトである程度録音出来る設定にしており、かつ一括で簡単に設定出来るメニューもあるので安心して下さい。一括設定の後、必要な機能だけをピンポイントに自分に合わせて下さい。 まず、初期設定から説明いたします。 設定画面最下部に「設定の初期化」があるのでタップして下さい。 1はウィジットでも用意している強制終了等で動作が不安定になったときにタップして下さい。 フラグのリセットだけで、設定している内容はそのまま保持します。 2はインストール時の状態に設定ファイルを全て削除して初期化します。今まで設定していた内容は保持しないのでご注意下さい。 3は当方所有の端末GalaxyS2LTEで私が利用している設定にします。 保存フォルダーを外部SDにしているので保存フォルダーに「external_cd」が付加されています。 外部SDとして認識しない端末で設定した場合SDカードに「external_sd」フォルダーを作成してその中に「zSuperRecorder」と言 うフォルダーを作るだけで問題はありません。オーディオソースは受話+送話になります。 4はこれも当方所有の端末SO-01B、S0-01C(ARC)での設定です。 「zSuperRecorder」フォルダーを作成します。 オーディオソースはマイクになります。 5は受話+送話設定が利用出来る正常なAndroidOSを搭載している端末用の設定です。あえて「正常なAndroidOS」と言う表現を使わせて頂き ますが、この設定で通話録音出来ない端末はバグが修正されてない端末か、メーカーがあえて通話録音出来ない様に出荷している端末です。 6は5以外の端末での利用と言う事になります。 オーディオソースをマイクにしなければならない端末で、元々Androidに潜んでいるMediaRecorderのバグを修正していない端末で、マイクに回り込んだ音声を録音する為レベルが低かったりノイズが入ったりする設定です。 あくまでも、端末の性能によるのでアプリではどうすることも出来ませんのでアプリの評価の前に端末の評価をお願いします。
自分なりの設定をする項目デフォルトの設定で問題なければその設定でご利用頂くのが良いとは思いますが、人それぞれですのでデフォルトの設定から変更するであろう設定についてご説明します。 まず、手動録音か自動録音かと言う事で、私は自動録音で良いのですが、任意のタイミングで録音したいと言うニーズも有ろうかと思います。 その場合は自動録音のチェックは外して手動録音にチェックを入れて下さい。通話画面になったときに手動録音ボタンが表示される様になります。 手動録音ボタンは電話アプリの表面に表示されるので、表示する場所がオンフックボタンの上などにしていると電話を切るのにタスクバーを表示しなければならなくなるのでご注意下さい。 ボタンの表示位置は、「手動録音ボタン配置」メニューでドラグして好きな位置に設定して下さい。最後に指を離した位置を設定値として登録します。 次に、タスクトレイアイコンの表示ですが、これが無いと、現状が確認出来ないのでお勧めしませんが、タスクトレイの表示をしければ、端末の負担が無くなり動作は安定します。 端末のパワーが気になるユーザはタスクトレイのアイコンを非表示しても良いと思いますが、基本は表示しておいた方が良いと思います。 あとは、トーストメッセージの非表示ですが、タスクトレイアイコンを非表示にしていても、トーストメッセージを表示しておけば動作確認が可能です。録音開始しましたとか保存します等のメッセージを画面下部に表示する設定です。 また、ファイルを保存するときに、最終確認の意味でも、あるとわかりやすいのでは無いかと思います。 電話帳登録、未登録設定の動作ですが、まず、ターゲット設定が優先します。電話帳に登録していようがいまいが、ターゲットリストに番号を登録してあり、かつ特定番号設定があれば最初にその設定を判定して動作します。 ターゲット機能を使わない場合のみ意味をなす設定です。 ターゲット機能を使わない設定の場合、電話帳に登録している番号のみ番号を録音するかしないかと、電話帳に登録していない番号を録音するかしないかの設定を別々に設定する事が出来ます。 電話帳登録済みのチェックを外して、電話帳未登録にチェックがあれば、未登録の番号のみ録音する事になります。 色々とロジック的に考慮して設定して下さい。 また、特定番号の着信拒否ですが、これはターゲット設定よりも優先します。録音動作開始前に判定するので、特定番号着信拒否設定が有効であれば、その特定番号は一切録音することはありません。 優先度:着信拒否>特定番号設定>電話帳設定と言う事になります。 送信メール設定はファイルを共有するときに共有をメールにする場合に設定しているメールアドレスが自動的にセットだれるので便利です。 これは、各自でPCのメールアドレスなどを入力して下さい。私はファイルの共有をEvernoteを利用する様にしたので、余り必要な機能では無くなりました。 保存フォルダーはデフォルトで「zSuperRecorder」と言うフォルダーをSDカードに作成します。 任意のフォルダーに変えてもらってかまいません。 また、TelRecProとファイルリストの構成方法が違うので、途中でフォルダーを変更しても、次からそのフォルダーに保存されるだけで、別々のフォルダーに保存されていてもリストに表示されます。 ただし、直接ファイルを移動したり削除したりする場合はこの限りではありません。その場合DB再登録で再びリストにファイルが登録されるので再生出来る様になります。 DB再登録ではファイル名のパターンを利用しているのでファイル名を変更しない場合に有効です。ファイル名を変更したりするとエラーするのでご注意下さい。 オーディオソースは実質マイクか受話+送話しか使いません。 先にも記載しておりますが、正常なAndroidOS搭載機であれば「受話+送話」設定で利用出来、この設定が利用出来る場合に限りBluetoothや イヤホンマイクでの通話録音も可能ですが、マイク設定の端末はBluetoothやイヤホンマイクでの通話録音は出来ません。 zSuperRecorderでは保存形式を選択出来る様にしました。 保存形式はAMRと3GPで、ファイル容量としてはAMRの方が小さくなるのでメールなど共有機能を利用する場合はAMRフォーマットをお勧めします。 また、Evernote等でもアプリ内で再生出来るなどメリットが多いです。 違いは一応、AMRは音声通話に適したフォーマットなので3GPの方が音質は上です。マイクで通話録音する端末は3GPにした方が良いかもしれません。 最後に、録音開始時間の設定ですが、この機能も数ある通話録音アプリの中でも見かけない機能で、着信時の録音開始時間と発信時の録音開始時間を設定可能にしています。 着信時は0秒、発信時は3〜5秒にします。(現在V2.6.9を公開しておりますが、発信秒数と切断がタイミング的に重なると手動録音フラグが立ってしまいます。その場合フラグリセットを実施して下さい) これは、Androidの仕様で相手が出たと言うイベントが取得できないので発信時のオフセットを別に設定できる様にしたTelRecProから引き継いだ機能です。 大体、発信してから3〜5秒以内で相手も出てくれるのでその設定に落ち着きました。 今回、zSuperRecorder初期バージョンにおいて発信録音開始時間以内に電話が切れると手動録音してしまう不具合が確認出来ました。 最新バージョンをダウンロードして下さい。V2.5.1以上 最後にある電話リスナーの破棄ですが、これは基本的にチェックする必要はありません。Xperia ARCにおいて、サービスの動作が仕様書通りでは無いために、不具合端末用に用意した設定ですが、条件分岐を付けたらARCでもいきなりリスナーを破棄す る事が無くなったので条件設定を入れているだけです。 チェックを入れるとサービス終了まで、リスナーを破棄しないので常に着信を監視するため端末に余計な負担をかけるのでチェックの必要はありません。 しかし、確認したところN-04CMEDIASとXPERIA ACRO等ではチェックをいれる必要があるようです。 また、V2.7.0から長電話対策タイマーを切れるようにしています。 タイマーを作動させておかないと、Galaxy S2 LTEにおいて、40分程度で録音が切れる場合があり、タイマーを作動させることで回避する事ができます。 ただし、XPERIA等、タイマーが無くても録音が切れない端末の場合、動作が不安定になる可能性がありますので、適宜調整してください。 タイマーを作動させても問題ない端末はタイマーを作動させておくことでタスクバーで録音中カウンターが作動して動作を確認する事ができます。
|
|||||||||||||||||||||||||||||||||||
回転時のレイアウト |
録音ファイルの再生zSuperRecorderにはアプリ内で録音ファイルを再生するPlayerを搭載しています。Playerは再生中に回転しても再生を引き継ぐ様にしています。 回転に対応したレイアウトに自動的に切り替わるのでTelRecProより進化しています。 また、Player上からファイル共有メニューを表示出来るので便利になりました。 ただし、これはAndroidのバグでMediaPlayerを修正していない端末で発生する現象ですが、通常ファイル再生が最後まで行くとシークバーは 初期値に戻るのですが、バグが改善されてない端末はシークバーが最後に位置でとどまります。(ファイルフォーマットが原因ではありません) そのまま再度再生すればシークバーは初期位置に戻り最初から再生し始めるのですが、Galaxy S2 LTEはMediaPleyerのバグが修正されているようで、最後まで再生するとシークバーが初期値に戻ります。 他の端末で試したのですが、初期値に戻るのはGalaxy S2 LTEだけでした。 トーストを表示していれば「最後まで再生しました」と表示されるのでイベントは認識しているのでコーディングで対応しました。 |
|||||||||||||||||||||||||||||||||||
各リスト画面で端末のメニューボタンを押すと、動作制御様のオプションメニューを表示します。 リスト画面から直接設定する事も可能です。 |
ターゲットナンバーの登録ターゲットナンバーは通話履歴と電話帳からも簡単に登録できます。ターゲットナンバーは登録している番号を録音対象にするかしないかのリストですが、着信拒否リストが優先します。 着信拒否機能を有効にしている場合、先に着信拒否の判定がされるので、同じ番号を登録していて、着信拒否を有効にした場合はご注意下さい。 通話履歴には番号非通知は表示されません。 ターゲットナンバーに登録しておき、ターゲットのみ録音設定の場合は、発着信を録音対象にしますが、自動録音機能を有効にしておかないと機能しません。 ターゲットのみ録音の場合はタスクバーにアイコンを表示していれば黄色、ターゲット以外を録音の場合、タスクバーのアイコンは紫になり、モードが直ぐに確認出来る様にしています。 ウィジットの説明を参照してください。 直接入力の場合、登録する名前を編集出来るようにしていますが、履歴などから直接登録した場合、再度タップしてから編集してください。 電話帳の登録名と関係内名前での登録も可能です。 このリストで重要なのは電話番号だけなので、名前では無く、理由なんかを登録してもわかりやすくなるかもしれません。 例えば、○○証拠用の録音とか、○○関係者の為とか色々と適宜お任せします。 着信拒否リストのUIも同様にしてあります。 |
|||||||||||||||||||||||||||||||||||
多言語対応まぁアプリの性質上言語設定は余り関係ないのですが、設定するための説明などが簡単にある程度意味が解れば良いのかなぁと思って、ローカライズしました が、端末の設定に合わせて表示されるのは良いのですが、端末の設定とは別にアプリだけで言語が設定出来れば便利だなぁと思って実装してみました。言語設定は、端末の言語設定とは独立して設定出来ますが、画面回転などを行うとそのときは元の言語設定に戻ってしまいます。 その場合、回転が終わってから再度表示すると設定した言語で表示される様にしています。 回転時のイベントをキャッチして設定するようにしているのですが上手く反映されませんでした。 基本的には端末設定でご利用いただければ良いのかなぁとは思います。 一応、デバッグ機能としてV2.5.3ではロシア語などにすると文字列調整をしていなかったのでリストのボタンが押せなくなるなど不具合が発生しています。V2.5.4でリストのレイアウトを調整しています。(次期公開予定) |
||||||||||||||||||||||||||||||||||||
保存フォルダー作成のヒント保存フォルダーを任意に作成する場合、一般的なスマートフォンは「/sdcard/」直下にフォルダーを作成して、その中に録音ファイルが保存されるの で、端末からSDカードを外してPCにつないだ場合、作成したフォルダーが表示されるのでわかりやすいのですが、SamsunのGALAXYの場合、 「external_sd」内にフォルダーを作成しないと、取り外しできるSDカードに保存出来ません。GALAXYの場合「sdcard」は内部SDカードで端末にはじめから装備されており、取り外しできません。 取り外し出来るSDカードは「external_sd」と言う名前でマウントされるので、その中に保存しないと外部SDカードに保存出来ません。 V3.0.7にて外部SDを選択出来る様にしたので、外部SD名を入力する必要を無くしました。 一般的なスマートフォンで上記の設定をすると、SDカード上に「external_sd」を作成してその中にまた、フォルダーを作成するだけなので特に問題はありません。 また、本体メモリーには保存出来ないのでSDカード必須です。 本体メモリーに保存する事も可能だが、GALAXY等は16GBも有って問題ないが、それ以外はそんなにメモリーも多くないので実用的では無いだろう。 auのXperiaの場合、外部SDをmnt直下にマウントするのですが、外部SDカードの設定を適切にしておけば外部SDカードに保存出来る様になります。 |
||||||||||||||||||||||||||||||||||||
ほとんどの端末で「受話のみ」「送話のみ」は正常に機能しません。 GALAXY S2 LTEで確認したところ、受話のみではノイズがものすごく入り使い物にならず、送話のみに至っては、内部的に強制終了します。 この機能が正常に動作したのは他にも有るかもしれませんが、私が認識しているのはN04Cだけでした。(MEDIAS) |
オーディオソースのヒントこの設定が通話録音で最も重要な設定となります。仕様書通りのAndroidOS搭載機であれば「3:受話+送話」を選択する事で通話録音が仕組みとして提供されるのですが、図はXPERIAの設定です。 XPERIAはマイクにしておかないと通話録音出来ません。 これは、Googleが提供している素のANDROID搭載のMediaReorderにバグがあり、ずいぶん前から指摘されてGoogleも把握しているバグですが、Android4.0になっても修正されていません。 よって、各端末メーカーは自社で修正して端末に搭載しないとXPERIAの様な事になります。 さらに悪いことに、XPERIAはAndroid2.3から独自に「ノイズ抑止機能」という物を搭載し始めました。 これは、通話相手にクリヤーな音声を届かせる機能と言う事ですが、セカンドマイクで音を拾って、その音をマイクにぶつけて打ち消す機能だろうと推測しています。 これが、マイクでしか通話録音出来ないXPERIAには致命傷で、折角録音出来ている受話音声まで打ち消しているのです。 このノイズ抑止機能を止めることが出来(設定でオフにしても)ないため、受話音声音録音レベルが非常に小くなってしまいます。 回避するには、送話用のマイクを完全に塞ぐことでノイズ抑止機能を働かないように出来るので受話音声はまともなレベルで録音出来ますが、送話音声が届かなくなるのでユーザはその点を踏まえて上手いことやって下さい。 また、F-05D等、ARROWSシリーズの端末は、電話にこだわった設定が出来る様になっており、手元に無いのでどう影響してくるのか判別出来ません が、伝言メモを搭載しているのでMediaRecorderのバグは修正しているはずです。修正しないと録音出来ないわけですから3の設定が利用可能なは ずです。 しかし、端末自体の電話にこだわった機能が色々と有り、ゆっくりボイスとかクリヤーボイスみたいな機能が上手く処理されてないのか、その辺の余計な設定で通話録音を不安定な状況にしていると思われます。 あくまでも、DeveloperとしてはAndroidの仕様に準拠しており、Arrowsの仕様に準拠する事は無く、Arrows側が正しく仕様通りにAndroidを実装していないので上手く通話録音出来ないというのが事実です。 1のデフォルトは端末毎に違うのでどのオーディオソースを選択するのか解りません。 4と5はNECカシオ製のMEDIASシリーズN-04Cで設定通りになるようですが、あまり利用する機会はないと思います。 6については、音声認識として利用するオーディオソースで通話録音には関係が無いようです。 仕様書通りに設定できる様にしておけば、何かの時に使えるかもしれないとして設定できる様にしているだけなので、実質2と3以外は設定する必要は無く、通 話録音出来ない端末がもしかしたら他の設定でと思いましたが、そもそも2か3で通話録音出来ない端末はなにをしても出来ないと思います。 |
|||||||||||||||||||||||||||||||||||
手動通話録音のヒント今回、一番に着手した部分が手動での通話録音です。これは、CallRecorderと言うすばらしいUIの通話録音アプリをパクッタ手法です。 元々、タスクトレイの通知領域に録音トリガーを表示表示させておけば、手動での録音も簡単にできると思ったのですが、ところがどっこい、GALAXYの場合、緑色になってロックがかかってしまいます。 MediaRecorderやMediaPlayer自体が作動していなければ緑にならないのですが、どうにも通知領域での操作は画面もややこしくなりUIとしても成立せずTelRecProでは断念しました。 そんな中CallRecorderのUIを見て、次はチャレンジしようと、この機能を実装する前提で設計をしました。 この電話アプリの上に表示されるボタンは自動録音がオフの時のみ表示されます。 オーバーレイボタンは電話アプリの上でタスクバーの下のレイヤーに表示する様にしています。 通話中にタップする事で即座に録音開始し、もう一度押すと停止します。 同じ通話中に何回も使用できるようにしているので会話のポイント毎にファイルを作成可能です。 手動で録音中でも通話が切れるとその時点でファイルを保存して終了するようにしています。 画像はXPERIAの画面ですが、端末によってはデザインが色々あると思うのでボタンの表示位置は適宜自分の端末に合うように自由に配置して下さい。通話 終了ボタンの上に配置すると電話を切ることが出来なくなるので注意して下さい。(その場合タスクトレイを下げると終話ボタンが表示されるのでそちらで切っ て下さい) また、まれに異常終了したばあい、ボタンが消えずに残る可能性があります。 その場合、端末のメニュー→アプリケーション(アプリ)→アプリケーションの管理を表示して強制終了してください。(端末の再起動までする必要はありません) |
||||||||||||||||||||||||||||||||||||
SDカードの容量表示についてV2.6.4からSDカードの容量を表示する様にしました。このとき、microSDカードをexternal_sdとしてマウント(認識)する端末の場合、本体メモリーでは無く、差し込んでいるmicroSDカードの容量を表示する様にしています。 external_sdとして認識しない端末の場合はそのまま差し込んだmicroSDカードの容量を表示します。 上からSDカードの全容量、真ん中が空き容量、最後が保存フォルダー内のファイル容量です。 各サイズの表示単位は自動的にByteからMB、GBと変更します。 テストではAMR形式で保存した場合、1時間の容量は約6MB、2時間で約12MBでした。 1GBの空き容量があれば、約170時間は理論的に録音出来るのでは無いかと思います。 PCM形式の場合、サンプルレート44100Hz約7時間で2GB消費します。1GBの空き容量では約3.5時間しか録音出来ません。レートを下げれば時間を延ばせるので適宜調整して下さい。 画像はSO-01Bにて16GBのSDカードを入れていますが、14.83GBとして認識しています。 端末の設定メニューのストレージで確認する数値と同じです。 |
||||||||||||||||||||||||||||||||||||
リストの編集について、ボイスレコーダーとして利用する場合、リスト名が「VoiceRecorder」と固定にしていたのだが、ボイスレコーダーとしての利用も結構有用で、 通話録音の場合は名前があるので何となく思い出せるのだが、ボイスレコーダーの場合は聞かないと覚えていられないので不便だった。そこで、リスト上の名前を変更出来る様にしたので、適宜、録音の中身に合わせた名前を付けられる様にした。 名前の変更は、ボイスレコーダーの場合、固定の番号をリストに持たせているが、そこも変更した名前に置き換えるようにしている。 これは、リストを絞り混むときにボイスレコーダーの中でも区分出来る様にするためで、実際にリストにいくつかためて、検索するときに登録されているリストが表示されるのだが、その時に直感的にわかると思う。 また、音声付き通話履歴として完成させるために、リストに登録している番号へ直接電話をかけられる様にしている。 今までは、録音ファイルリストとしての限定利用であったのが、直接発信出来る様にしたことで、音声付きの通話履歴として利用出来るので便利になったかなあと思う。 |
||||||||||||||||||||||||||||||||||||
自動削除機能(V2.8.3)V2.8.3から自動削除機能に対応しました。設定した日数までファイルを保存しますが、設定した保存期間を過ぎたファイルはリストを開くときに自動的に削除します。 「0」設定で自動削除機能は動作しなくなります。 設定値は0〜999までで、保存期間設定は1日が最低なので、当日録音ファイルは自動削除出来ません。 1に設定しておくと翌日リストを開くと自動的に削除します。(V2.8.4〜でV2.8.3だと設定した日数プラス1日余計に計算していたのでV2.8.4で修正しています) 削除したくないファイルがある場合は保護するか、保存期間無いにPC等へメールなどで送っておいて下さい。 保護してあれば期間を過ぎても削除する事はありません。 自動削除機能のインストール時の初期値は0日に設定してありますので、適宜変更して下さい。 変更しない場合、機能しません。 リスト表示の際に、期間外のファイルがあれば削除の確認ダイアログを表示するようにしています。 このとき、キャンセルすることで期間外のファイルを自動削除しない選択も可能です。 |
||||||||||||||||||||||||||||||||||||
PCM形式での保存についてV2.7.2.0からPCM形式で録音出来る様にしています。Windows等でなじみのwavフォーマットで保存出来るのですが、ファイル容量は圧縮しないのでかなり大きめになります。 通常の通話録音であればAMRをお勧めします。 また、ボイスレコーダーとして利用する場合に威力を発揮する機能と思って下さい。 ボイスレコーダーとして利用する場合、通話録音の設定を無視してwavフォーマットで保存出来るオプションがあるので、その設定にしておくとボイスレコー ダーでの録音にPCM形式での録音が採用されるので、集音性の低いマイクを搭載している端末でも、比較的高音質で録音する事が可能です。 サンプルレート毎のファイルサイズ
あくまでも理論値だがPCMでサンプルレートを48000Hzにして1時間録音した場合333MBの容量が必要と言う事になると思って良いと思う。 ただし、AudioRecodredにもバグのある端末があって、手持ちのSO-01B(Android2.3)の場合8000Hz以外は1分で止めた場合再生時間が42秒となり、早口な再生になって、それはそれで面白いが使えない。 純正のAndroid2.1Updateに戻して確認はしてないが、何となくバグが潜んでいると思う。 PCM形式で録音した場合に何らかの原因で強制終了した場合、ヘッダを作り直すことが出来る様にしています。 PCM録音は端末のメモリーを多く消費するので、メモリーの負担とSDカードの負担を極力なくすようにしています。 録音時に利用するファイルバッファをそのままWAV形式に変換するので、効率よく最低限のメモリーで高音質をお楽しみいただけると思います。 WAVファイルのDB登録が失敗していても、ファイルリストを長押しする事でPCMヘッダ修正メニューが表示されます。 該当のファイルをタップすると、自動的にヘッダを修正してDBに登録しなおします。(先にDB再登録登録でリストに登録してから実施してください) MP3録音はV2.8.0から追加しています。NDKを使ったリアルタイム変換を行っています。 基本的にはPCM録音と同じで、バッファをリアルタイムにMP3変換して保存していますが、端末パワーが必要なようで、非力な端末だと音飛びとか発生する可能性があります。 (書き込みなどの処理が間に合わず、バッファが無くなり次のバッファが書き込まれたりする現象) |
||||||||||||||||||||||||||||||||||||
スピーカフォン設定についてTelRec開発当初、SO-01Bで動作確認していたのだが、最初上手く録音出来なかった時に、たまたまスピーカフォンボタンに触れたときに録音出来た事があった。zSuperRecorder開発に当たり、意識はしていたのだが、とりあえず無しでも録音出来るのであえて実装していなかったのだが、念のため設定できる様に追加しておいた。 TelRecProのコメントにスピーカフォンを触るとどうのこうのと有ったので、ひょっとしたらF05Dの場合、この設定を入れると録音出来る可能性はある。 また、N04Dでもそういった可能性があるが試していない。 無用の設定になる可能性があるが、近接センサーが反応して初回の画面消灯時に無音になる端末には効果的だ。 近接センサーがオフに出来る端末は良いが、オフに出来ない端末で無音になる場合は試して見る価値はある。 その昔ARCでは必須の機能だったが、今のARCは必要が無いが、その時にスピーカフォンのオンオフで画面消灯しても無音にならない事があったので実装してみた。 スピーカフォン状態で録音すると言う意味では無く、一瞬、スピーカフォンボタンをオンオフするだけだ。 |
||||||||||||||||||||||||||||||||||||
ZIP圧縮についてzSuperRecorderにV2.9.1からZIP書庫作成機能を実装しました。選択すると、ファイルリストが表示されるので、一つにしたファイルをにチェックを入れて下さい。 まとめたいファイルのチェックが終わったら、「圧縮」ボタンをおすと、ZIP書庫に圧縮されます。 関連ファイルを一つのファイルに出来るのでメールなどでの送信も1回で遅れます。 解凍する場合は、設定しているフォルダーに解凍し、この時点ではリストに登録されておらず、必要なファイルを再登録して下さい。 また、圧縮後、圧縮元を削除する機能もあります。 リスト所のZIPファイルをタップすると、解凍メニューが表示されるので、解凍したい場合そのまま解凍して下さい。 WAV等で長時間録音したファイルなどは圧縮率が高いので高音質ファイルをメールで添付するサイズに縮小する事もできます。 1GBのWAVファイルを圧縮すると500KB程度まで圧縮できました。(約3時間録音の48khzPCMファイル) |
||||||||||||||||||||||||||||||||||||
タイマー録音機能V2.9.3からタイマー機能を追加しました。自動で録音開始する時間と停止する時間を設定する事が可能です。 24時間の範囲で、自由に開始と停止の時刻を設定することがかのうです 。 自動録音をオフにしなければ、毎日同じ時刻に録音を開始して停止する事を繰り返します。 |
||||||||||||||||||||||||||||||||||||
zSuperRecorderを簡易留守番電話にする使い方自動応答アプリ「zAutoCall」をマーケットにフリーで公開しています。zSuperRecorder以外の通話録音アプリをお使いの方にも、メリットがあればと思います。 zAutoCallは単純に着信をフックして通話状態にするだけの機能しか有りません。 Androidの仕様で「ただいま電話に出られません」とかのメッセージを送信したいのですが、難しいのでとりあえず、自動着信アプリと言うのは数少ないと思いますが、そのうちの一つです。 このアプリで自動的に着信すると、zSuperRecorderがインストールしていれば、自動通話録音が作動するので便宜上留守番メッセージを端末に保存する事が出来る様になります。 通話録音アプリと組み合わせて使うことで、伝言メモの様な事がアプリでも実現したと思って下さい。 ただ、電話の自動応答は対応出来る端末がどの位有るかわかりません。 手持ちのSO-01B/SO-01C/SC-02B/SC-03Dでは問題なく着信応答できました。 まぁこれだと「もしもしー、。。。あれっ?もしもしーーーー」と言う音声しか録音出来ないかもしれませんが。 |
||||||||||||||||||||||||||||||||||||
外部SDカードについて本来、「System.getenv("EXTERNAL_STORAGE")」こういう命令で外部SDカードのパスが取得出来なければならないはずなのだが、おそらくANDROIDのバグで正確な情報を取得出来ない。さらに悪いことに、メーカーもこのあたりを統一していないのでメーカー毎にマウントするフォルダー名が違うのだ。 F-05D /mnt/sdcard/external_sd/ IS12S /mnt/ext_card/ ISW11M /mnt/sdcard-ext/ N-04D /mnt/sdcard/external_sd/ T-01D /mnt/sdcard/external_sd/ SC-02C /mnt/sdcard/external_sd/ SO-03D /mnt/sdcard/external_sd/ ISW11F /mnt/sdcard/external_sd/ F-08D /mnt/sdcard/external_sd/ SC-02B /mnt/sdcard/external_sd/ ISW11SC /mnt/sdcard/external_sd/ SC-03D /mnt/sdcard/external_sd/ N50GT_A /mnt/storage/sdcard/ そこで、自動で外部SDカードのマウント名が取得出来ないので手動で選択してもらうしかない。 この設定は、トップ画面に表示しているSDカードの容量を表示するための設定で、録音には関係ないが、ある程度正確な情報を得ておかないとSDカードが一杯になってしまうので目安にしてほしい。 ※保存フォルダーの先頭にここで設定したフォルダーを付加するので、保存フォルダー名任意に設定して下さい。デフォルトは「zSuperRecorder」と言うフォルダー名に保存するようにしています。 |
||||||||||||||||||||||||||||||||||||
ショップで売っているのはClass4 同じ値段で量販店ならClass10が買えます。 |
通話録音を安定させるアドバイス※お使いのSDカードがClass6以下の場合読み書きが遅いので録音ファイルがまれに処理を失敗する可能性も否めませんので少々お高いですが通話録音を確実に行いたい場合や少しでも安心感を得たい場合はClass10のSDカードをお勧めいたします。DSなんかでClass4を売ってますが、量販店でClass10が買える価格かそれより高いのでmicroSDカードは量販店での購入をお勧めいたします。ショップで買うと損しますよ。(SDカードの速度要件は重要です) ※アプリをSDカードに移動出来る様にするためにはAndroid2.2対応でビルドする必要があります。 それでは2.1のユーザも多いわけで、2.1のユーザはダウンロード出来なくなってしまうので、ビルドは2.2以上向けですが、要件で2.1対応しています。 これで、SDカードへの移動が可能となるアプリを2.1ユーザ以上へ提供しているのですが、SDカードに移動するとウィジットが利用出来ないのと、再起動時にタスクトレイにアイコンを表示出来なくなります。 その場合、一度アプリが起動すると復帰します。 自動録音自体はSDカードへアプリを移動させても問題なく動作するのでご安心下さい。 |