• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2011 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.cts.verifier.bluetooth;
18 
19 import com.android.cts.verifier.PassFailButtons;
20 import com.android.cts.verifier.R;
21 
22 import android.bluetooth.BluetoothAdapter;
23 import android.bluetooth.BluetoothDevice;
24 import android.content.Intent;
25 import android.os.Bundle;
26 import android.os.Handler;
27 import android.os.Message;
28 import android.provider.Settings;
29 import android.view.View;
30 import android.view.View.OnClickListener;
31 import android.view.Window;
32 import android.widget.Button;
33 import android.widget.TextView;
34 import android.widget.Toast;
35 
36 public class ConnectionAccessClientActivity extends PassFailButtons.Activity {
37 
38     private static final int ENABLE_BLUETOOTH_REQUEST = 1;
39     private static final int PICK_SERVER_DEVICE_REQUEST = 2;
40 
41     private BluetoothAdapter mBluetoothAdapter;
42     private BluetoothChatService mChatService;
43     private String mDeviceAddress;
44     private Button mPickServerButton;
45 
46     @Override
onCreate(Bundle savedInstanceState)47     protected void onCreate(Bundle savedInstanceState) {
48         super.onCreate(savedInstanceState);
49         requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
50         setContentView(R.layout.bt_connection_access);
51         setInfoResources(R.string.bt_connection_access_client,
52                 R.string.bt_connection_access_client_info, 0);
53         setPassFailButtonClickListeners();
54 
55         View settings = findViewById(R.id.bt_settings);
56         settings.setOnClickListener(new OnClickListener() {
57             @Override
58             public void onClick(View view) {
59                 startActivity(new Intent(Settings.ACTION_BLUETOOTH_SETTINGS));
60             }
61         });
62 
63         mPickServerButton = (Button) findViewById(R.id.bt_pick_server_button);
64         mPickServerButton.setVisibility(View.VISIBLE);
65         mPickServerButton.setOnClickListener(new OnClickListener() {
66             @Override
67             public void onClick(View v) {
68                 startDevicePickerActivity();
69             }
70         });
71 
72         mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
73         if (!mBluetoothAdapter.isEnabled()) {
74             mPickServerButton.setEnabled(false);
75             startEnableBluetoothActivity();
76         }
77     }
78 
startDevicePickerActivity()79     private void startDevicePickerActivity() {
80         Intent intent = new Intent(this, DevicePickerActivity.class);
81         startActivityForResult(intent, PICK_SERVER_DEVICE_REQUEST);
82     }
83 
startEnableBluetoothActivity()84     private void startEnableBluetoothActivity() {
85         Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
86         startActivityForResult(intent, ENABLE_BLUETOOTH_REQUEST);
87     }
88 
89     @Override
onActivityResult(int requestCode, int resultCode, Intent data)90     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
91         super.onActivityResult(requestCode, resultCode, data);
92         switch (requestCode) {
93             case ENABLE_BLUETOOTH_REQUEST:
94                 if (resultCode == RESULT_OK) {
95                     mPickServerButton.setEnabled(true);
96                 } else {
97                     setResult(RESULT_CANCELED);
98                     finish();
99                 }
100                 break;
101 
102             case PICK_SERVER_DEVICE_REQUEST:
103                 if (resultCode == RESULT_OK) {
104                     mDeviceAddress = data.getStringExtra(DevicePickerActivity.EXTRA_DEVICE_ADDRESS);
105                     startChartService();
106                 }
107                 break;
108         }
109     }
110 
startChartService()111     private void startChartService() {
112         mChatService = new BluetoothChatService(this, new ChatHandler(),
113                 BluetoothChatService.HANDSFREE_INSECURE_UUID);
114         BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(mDeviceAddress);
115         mChatService.connect(device, false);
116     }
117 
118     private class ChatHandler extends Handler {
119         @Override
handleMessage(Message msg)120         public void handleMessage(Message msg) {
121             super.handleMessage(msg);
122             switch (msg.what) {
123                 case BluetoothChatService.MESSAGE_STATE_CHANGE:
124                     handleStateChange(msg);
125                     break;
126 
127                 case BluetoothChatService.MESSAGE_DEVICE_NAME:
128                     handleDeviceName(msg);
129                     break;
130 
131                 case BluetoothChatService.MESSAGE_TOAST:
132                     handleToast(msg);
133                     break;
134             }
135         }
136     }
137 
handleStateChange(Message msg)138     private void handleStateChange(Message msg) {
139         int state = msg.arg1;
140         switch (state) {
141             case BluetoothChatService.STATE_CONNECTING:
142                 setProgressBarIndeterminateVisibility(true);
143                 Toast.makeText(this, R.string.bt_connecting, Toast.LENGTH_SHORT).show();
144                 break;
145 
146             case BluetoothChatService.STATE_CONNECTED:
147                 setProgressBarIndeterminateVisibility(false);
148                 Toast.makeText(this, R.string.bt_connected, Toast.LENGTH_SHORT).show();
149                 break;
150 
151             case BluetoothChatService.STATE_NONE:
152                 setProgressBarIndeterminateVisibility(false);
153                 break;
154         }
155     }
156 
handleDeviceName(Message msg)157     private void handleDeviceName(Message msg) {
158         mDeviceAddress = msg.getData().getString(BluetoothChatService.DEVICE_NAME);
159     }
160 
handleToast(Message msg)161     private void handleToast(Message msg) {
162         String toast = msg.getData().getString(BluetoothChatService.TOAST);
163         Toast.makeText(this, toast, Toast.LENGTH_SHORT).show();
164     }
165 }
166