延期して長い間怠けていた後、私はついにAndroidプログラミングを学ぶことにしました。そうそう、私はその中のほとんど基本的なn00bです。
電話のモードをサイレントに切り替えて呼び出し音に戻すアプリを作成しました。今私が直面している問題は、アプリがバックグラウンドに移行し、再開されたときに、トグルボタンの状態が電話の状態に応じている必要があるということです。
例:電話がすでにサイレントモードになっていて、アプリを起動した場合、トグルボタンを押してアクティブにし、それに応じて適切なテキストを表示する必要があります。
さて、私が理解したことから、この状態設定は、電話がサイレントであるかどうかをチェックしているときに、OnCreate/OnResumeで行う必要があります。
MainActivity.javaのコードは次のとおりです
package com.SMT.silentmodetoggle;
import android.os.Bundle;
import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.media.AudioManager;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.CompoundButton;
import android.widget.ToggleButton;
import android.widget.ImageView;
import android.util.Log;
public class MainActivity extends Activity {
private AudioManager mAudioManager;
private boolean mPhoneIsSilent;
private static final String TAG = "SilentModeApp";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mAudioManager = (AudioManager)getSystemService(AUDIO_SERVICE);
checkIfPhoneIsSilent();
setBUTTONCLICKLISTENER();
Log.d("SilentModeApp", "This Is A Test");
}
private void setBUTTONCLICKLISTENER() {
ToggleButton toggleButton1 = (ToggleButton)findViewById(R.id.toggleButton1);
toggleButton1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonview, boolean isChecked){
if (mPhoneIsSilent) {
// Change back to normal mode
mAudioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
mPhoneIsSilent = false;
}
else {
// Change to silent mode
mAudioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
mPhoneIsSilent = true;
}
// Now toggle the UI again
toggleUi();
}
});
}
private void checkIfPhoneIsSilent() {
int ringerMode = mAudioManager.getRingerMode();
if (ringerMode == AudioManager.RINGER_MODE_SILENT) {
mPhoneIsSilent = true;
}
else {
mPhoneIsSilent = false;
}
}
/**
* Toggles the UI images from silent to normal and vice versa.
*/
private void toggleUi() {
ImageView imageView = (ImageView) findViewById(R.id.phone_icon);
Drawable newPhoneImage;
//ToggleButton checkTB = null;
if (mPhoneIsSilent) {
newPhoneImage = getResources().getDrawable(R.drawable.phone_off);
//checkTB.setChecked(true);
}
else {
newPhoneImage = getResources().getDrawable(R.drawable.phone_on);
//checkTB.setChecked(false);
}
imageView.setImageDrawable(newPhoneImage);
}
@Override
protected void onResume() {
super.onResume();
checkIfPhoneIsSilent();
toggleUi();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
トグルボタンの情報は次のとおりです。
<ToggleButton
android:id="@+id/toggleButton1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/phone_icon"
android:layout_centerHorizontal="true"
android:text="ToggleButton1"
android:textOff="Toggle Silent Mode On"
android:textOn="Toggle Silent Mode Off"
/>
CM10.14.2.1を実行しているSamsungGalaxySIII9100でアプリを実行/デバッグしています
Eclipseはすでに4.2をターゲットに設定されています
すべてのヘルプとフィードバックはいつでも歓迎され、貴重です:)お時間をいただきありがとうございます。