私はダミーのために Android を読み始め、Silent Mode Toggle という最初のアプリを作ろうとしています。
今私が直面している問題は次のとおりです。
レイアウトには、ボタンが 1 つだけあるようなものが必要です。電話機がサイレント モードの場合、テキストは「サイレント モードが有効化されました」と表示され、電話機が通常モードの場合は「ノーマル モードが有効化されました」と表示されます。
バイブレーション モードを有効にするかどうかをユーザーに確認する必要があります。
以下は私のコードです:
XML レイアウト
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#ffffff" >
<ImageView
android:id="@+id/phone_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="7dp"
android:src="@drawable/phone_on" />
<Button
android:id="@+id/silent"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="35dp"
android:text="@string/silent_off" />
</LinearLayout>
Java コード
public class MainActivity extends Activity {
private AudioManager mAudioManager;
private boolean mPhoneIsSilent;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
super.onCreate(savedInstanceState);
mAudioManager = (AudioManager)getSystemService(AUDIO_SERVICE);
checkIfPhoneIsSilent();
setButtonClickListener();
Log.d("SilentModeApp", "This is a test");
}
private void setButtonClickListener() {
Button toggleButton = (Button)findViewById(R.id.silent);
toggleButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
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);
mAudioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);
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;
}
}
private void toggleUi() {
ImageView imageView = (ImageView) findViewById(R.id.phone_icon);
Drawable newPhoneImage;
if (mPhoneIsSilent){
newPhoneImage =
getResources().getDrawable(R.drawable.phone_silent);
}
else
{
newPhoneImage =
getResources().getDrawable(R.drawable.phone_on);
}
imageView.setImageDrawable(newPhoneImage);
}
@Override
protected void onResume() {
super.onResume();
checkIfPhoneIsSilent();
toggleUi();
}
}
アップデート
これで、「mAudioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);」を削除し、通常モードから振動モードに移行しました。
レイアウトのことで助けが必要です。
3 つのボタンとテキスト ステータス テキストが必要です。ボタンとテキスト メッセージの作成方法は知っていますが、それを Java と統合する方法はわかりません。
電話が通常モードの場合、ボタンの上の画像の下にステータス メッセージが表示される必要があります。
電話機が通常モードの場合、ボタンは 2 つだけである必要があります: サイレント モードに切り替え、バイブレーション モードに切り替えます。
他のモードでも同じです。