FileDocCategorySizeDatePackage
BluetoothPinDialog.javaAPI DocAndroid 1.5 API7012Wed May 06 22:42:48 BST 2009com.android.settings.bluetooth

BluetoothPinDialog

public class BluetoothPinDialog extends com.android.internal.app.AlertActivity implements DialogInterface.OnClickListener, android.text.TextWatcher
BluetoothPinDialog asks the user to enter a PIN for pairing with a remote Bluetooth device. It is an activity that appears as a dialog.

Fields Summary
private static final String
TAG
private final int
BLUETOOTH_PIN_MAX_LENGTH
private LocalBluetoothManager
mLocalManager
private String
mAddress
private android.widget.EditText
mPinView
private android.widget.Button
mOkButton
private static final String
INSTANCE_KEY_PAIRING_CANCELED
private boolean
mReceivedPairingCanceled
private android.content.BroadcastReceiver
mReceiver
Constructors Summary
Methods Summary
public voidafterTextChanged(android.text.Editable s)

        if (s.length() > 0) {
            mOkButton.setEnabled(true);
        }
    
public voidbeforeTextChanged(java.lang.CharSequence s, int start, int count, int after)

    
private android.view.ViewcreateView()

        View view = getLayoutInflater().inflate(R.layout.bluetooth_pin_entry, null);
        
        String name = mLocalManager.getLocalDeviceManager().getName(mAddress);
        TextView messageView = (TextView) view.findViewById(R.id.message);
        messageView.setText(getString(R.string.bluetooth_enter_pin_msg, name));
        
        mPinView = (EditText) view.findViewById(R.id.text);
        mPinView.addTextChangedListener(this);
        // Maximum of 16 characters in a PIN
        mPinView.setFilters(new InputFilter[] { new LengthFilter(BLUETOOTH_PIN_MAX_LENGTH) });
        
        return view;
    
private voidonCancel()

        mLocalManager.getBluetoothManager().cancelBondProcess(mAddress);
    
public voidonClick(android.content.DialogInterface dialog, int which)

        switch (which) {
            case DialogInterface.BUTTON_POSITIVE:
                onPair(mPinView.getText().toString());
                break;
                
            case DialogInterface.BUTTON_NEGATIVE:
                onCancel();
                break;
        }
    
protected voidonCreate(android.os.Bundle savedInstanceState)

    
    
        
        super.onCreate(savedInstanceState);

        Intent intent = getIntent();
        if (!intent.getAction().equals(BluetoothIntent.PAIRING_REQUEST_ACTION))
        {
            Log.e(TAG,
                  "Error: this activity may be started only with intent " +
                  BluetoothIntent.PAIRING_REQUEST_ACTION);
            finish();
        }
        
        mLocalManager = LocalBluetoothManager.getInstance(this);
        mAddress = intent.getStringExtra(BluetoothIntent.ADDRESS);
        
        // Set up the "dialog"
        final AlertController.AlertParams p = mAlertParams;
        p.mIconId = android.R.drawable.ic_dialog_info;
        p.mTitle = getString(R.string.bluetooth_pin_entry);
        p.mView = createView();
        p.mPositiveButtonText = getString(android.R.string.ok);
        p.mPositiveButtonListener = this;
        p.mNegativeButtonText = getString(android.R.string.cancel);
        p.mNegativeButtonListener = this;
        setupAlert();
        
        mOkButton = mAlert.getButton(DialogInterface.BUTTON_POSITIVE);
        mOkButton.setEnabled(false);

        /*
         * Leave this registered through pause/resume since we still want to
         * finish the activity in the background if pairing is canceled.
         */
        registerReceiver(mReceiver, new IntentFilter(BluetoothIntent.PAIRING_CANCEL_ACTION));
    
protected voidonDestroy()

        super.onDestroy();
        
        unregisterReceiver(mReceiver);
    
private voidonPair(java.lang.String pin)

        byte[] pinBytes = BluetoothDevice.convertPinToBytes(pin);
        
        if (pinBytes == null) {
            return;
        }
        
        mLocalManager.getBluetoothManager().setPin(mAddress, pinBytes);
    
private voidonReceivedPairingCanceled()

        mReceivedPairingCanceled = true;
        
        TextView messageView = (TextView) findViewById(R.id.message);
        messageView.setText(getString(R.string.bluetooth_pairing_error_message,
                mLocalManager.getLocalDeviceManager().getName(mAddress)));
        
        mPinView.setVisibility(View.GONE);
        mPinView.clearFocus();
        mPinView.removeTextChangedListener(this);

        mOkButton.setEnabled(true);
        mAlert.getButton(DialogInterface.BUTTON_NEGATIVE).setVisibility(View.GONE);
    
protected voidonRestoreInstanceState(android.os.Bundle savedInstanceState)

        super.onRestoreInstanceState(savedInstanceState);
        
        mReceivedPairingCanceled = savedInstanceState.getBoolean(INSTANCE_KEY_PAIRING_CANCELED);
        if (mReceivedPairingCanceled) {
            onReceivedPairingCanceled();
        }
    
protected voidonSaveInstanceState(android.os.Bundle outState)

        super.onSaveInstanceState(outState);
        
        outState.putBoolean(INSTANCE_KEY_PAIRING_CANCELED, mReceivedPairingCanceled);
    
public voidonTextChanged(java.lang.CharSequence s, int start, int before, int count)