ContentResolverの振る舞いを調べるため、その学習・実験材料として、代表的なコマンドであるマナーモードに関する情報を取得します。
マナーモードを取得する方法は2種類あります。
一方はAudioManagerを使う方法であり、他方はContentResolverを使う方法です。
本当にマナーモードを取得したいのであれば、AudioManagerを使えばよろしいです。
両方の方法を実装した、非実用的なサンプルプログラムを掲載しておきます。
マナーモードは、Settings.Secureに属するのではなく、Settings.Systemに属し、mode_ringerという名前です。
public class Resolver2Activity extends Activity
implements
OnClickListener
{
boolean bFlag;
Button bu;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
bu = (Button)findViewById(R.id.Button);
bu.setOnClickListener(this);
bFlag = true;
int iRet;
String s;
AudioManager am;
am = (AudioManager)getSystemService(AUDIO_SERVICE);
iRet = am.getRingerMode();
switch(iRet){
case AudioManager.RINGER_MODE_SILENT:
s = "RINGER_MODE_SILENT";
s = s + " : " + String.valueOf(AudioManager.RINGER_MODE_SILENT);
break;
case AudioManager.RINGER_MODE_NORMAL:
s = "RINGER_MODE_NORMAL";
s = s + " : " + String.valueOf(AudioManager.RINGER_MODE_NORMAL);
break;
case AudioManager.RINGER_MODE_VIBRATE:
s = "RINGER_MODE_VIBRATE";
s = s + " : " + String.valueOf(AudioManager.RINGER_MODE_VIBRATE);
break;
default: s = ""; break;
}
TextView tv;
tv = (TextView)findViewById(R.id.TextAudioManager);
tv.setText(s);
}
@Override
public void onClick(View v) {
if(v==bu) UsingContentResolver();
}
void UsingContentResolver(){
ArrayAdapter<String> aa;
ListView lv;
ContentResolver cr;
Cursor c;
Uri u;
String p[];
TextView tv;
aa = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1);
cr = getContentResolver();
tv = (TextView)findViewById(R.id.Text);
if(bFlag==true){
u = Settings.System.CONTENT_URI;
tv.setText("Settings.System");
bFlag = false;
}
else{
u = Settings.Secure.CONTENT_URI;
tv.setText("Settings.Secure");
bFlag = true;
}
p = new String[]{
Settings.NameValueTable.NAME,
Settings.NameValueTable.VALUE
};
c = cr.query(u, p, Settings.NameValueTable.NAME + " = 'mode_ringer'", null, null);
if(c.moveToFirst()==true){
do{
String s;
s = c.getString(c.getColumnIndex(Settings.NameValueTable.NAME));
s = s + " : " + c.getString(c.getColumnIndex(Settings.NameValueTable.VALUE));
aa.add(s);
}while(c.moveToNext()==true);
}
c.close();
c.close();
lv = (ListView)findViewById(R.id.ListView);
lv.setAdapter(aa);
}
}
0 件のコメント:
コメントを投稿