突然消失するかもしれないブログ

”とつきえブログ”

Androidの着信音の設定は何処?

Androidでは、全体的に情報がsqlite3のデータベースで管理されているらしく、sqlite3のデータベースファイルは通常、拡張子が.dbになっているため、findで簡単に探すことが出来ます。

そこで、Androidの着信音の設定がどのように行われているのかを調べてみました。

Android全体に関わる設定は以下のデータベースに保存されています。

/data/data/com.android.providers.settings/databases/settings.db

 image17

systemというテーブルで、”name”カラムの値がringtoneのものです。デフォルトでは、”content://media/internal/audio/media/21″となっています。

次に、MusicアプリでSDカードイメージ上のMP3ファイルを着信音に設定した場合では、”content://media/external/audio/media/2″となっています。

恐らく、Androidのメディア管理がマルチメディアファイルを管理しているのでしょうから、いかにもmediaっぽい管理用の.dbを探します。

すると以下のフォルダにそれっぽい.dbファイルが見つかります。

Android携帯電話の内蔵フラッシュメモリに記録されているものがinternal、SDカードに保存されているものがexternalという.dbファイルで管理されているようです。

/data/data/com.android.providers.media/databases/

external-df8091c.db
external-1501371c.db
internal.db
external-ef70f1c.db

internal.dbを覗くと、テーブル名がaudio_metaで、_idが21の_dataが、/system/media/audio/ringtones/Ring_Classic_02.oggになっています。

 image18

次に日付が一番新しいexternal-ef70f1c.dbを開きます。

やはり同じようにテーブル名がaudio_metaで、_idが2の_dataが、/sdcard/Music/haruhiOP.mp3になっています。ずばりあっています。

 image19

そこで、↓のsystemというテーブルで、”name”カラムの値がringtoneの値を、”content://media/external/audio/media/2″から、強制的に、”content://media/internal/audio/media/21″に書き換えます。

/data/data/com.android.providers.settings/databases/settings.db

DDMSからCallしてみます。すると、着信音が変わりません。そこで、エミュレータを再起動します。すると、Android標準のデフォルトの呼び出し音に戻りました。大正解のようです。

また、直接データベースファイルを更新しても反映されないようですね。

ここら辺の情報って公式のドキュメントには全くないっぽいんですよね。androidのクラスを使えば、簡単に変更できるんでしょうけど。

広告

Androidの着信音の設定は何処?」への2件のフィードバック

  1. おーしゃん 9月 30, 2008 11:06 am

    はじめまして。
    ちょっと気になって確認してみた所
    android.media.RingtoneManager
    android.media.Ringtone
    あたりが着信音関連ですね。
    adb shell から am start -a android.intent.action.RINGTONE_PICKER
    すると着信音設定画面が起動できます。

  2. typex20 10月 1, 2008 11:27 pm

    おーしゃんさん

    まいたうんです。はじめまして。

    素晴らしい情報どうもありがとうございます!

    教えていただいた通り実行してみたところ見事、着信音設定画面
    が出てきました。

    amコマンドをググってみたところ他の方も同様の方法を発見され
    ているようですね。

    ○AndroidのIntentをコマンドから投げる
     http://d.hatena.ne.jp/minghai/20080809/p1

    Google公式のドキュメントだと、以下のURLにひっそり?と情報
    がありますね。

    http://code.google.com/intl/ja/android/samples/ApiDemos/tests/AndroidManifest.html

    amコマンドについて詳しく調べてみたいと思います。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。