0

延期して長い間怠けていた後、私はついに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をターゲットに設定されています

すべてのヘルプとフィードバックはいつでも歓迎され、貴重です:)お時間をいただきありがとうございます。

4

1 に答える 1

1

checkIfPhoneIsSilent();の後に以下を追加するだけです。onCreate()メソッド内。また、onResume()に追加して、アクティビティ外の状態変化を確認します。

 ToggleButton toggleButton1 = (ToggleButton)findViewById(R.id.toggleButton1);
 toggleButton1.setChecked(mPhoneIsSilent);
于 2013-01-07T12:45:41.607 に答える