1*90c8c64dSAndroid Build Coastguard Worker /* 2*90c8c64dSAndroid Build Coastguard Worker * Copyright (C) 2015 The Android Open Source Project 3*90c8c64dSAndroid Build Coastguard Worker * 4*90c8c64dSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 5*90c8c64dSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 6*90c8c64dSAndroid Build Coastguard Worker * You may obtain a copy of the License at 7*90c8c64dSAndroid Build Coastguard Worker * 8*90c8c64dSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 9*90c8c64dSAndroid Build Coastguard Worker * 10*90c8c64dSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 11*90c8c64dSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 12*90c8c64dSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*90c8c64dSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 14*90c8c64dSAndroid Build Coastguard Worker * limitations under the License. 15*90c8c64dSAndroid Build Coastguard Worker */ 16*90c8c64dSAndroid Build Coastguard Worker 17*90c8c64dSAndroid Build Coastguard Worker package com.example.android.bluetoothadvertisements; 18*90c8c64dSAndroid Build Coastguard Worker 19*90c8c64dSAndroid Build Coastguard Worker import android.bluetooth.BluetoothAdapter; 20*90c8c64dSAndroid Build Coastguard Worker import android.bluetooth.BluetoothManager; 21*90c8c64dSAndroid Build Coastguard Worker import android.content.Context; 22*90c8c64dSAndroid Build Coastguard Worker import android.content.Intent; 23*90c8c64dSAndroid Build Coastguard Worker import android.os.Bundle; 24*90c8c64dSAndroid Build Coastguard Worker import android.support.v4.app.FragmentActivity; 25*90c8c64dSAndroid Build Coastguard Worker import android.support.v4.app.FragmentTransaction; 26*90c8c64dSAndroid Build Coastguard Worker import android.widget.TextView; 27*90c8c64dSAndroid Build Coastguard Worker import android.widget.Toast; 28*90c8c64dSAndroid Build Coastguard Worker 29*90c8c64dSAndroid Build Coastguard Worker /** 30*90c8c64dSAndroid Build Coastguard Worker * Setup display fragments and ensure the device supports Bluetooth. 31*90c8c64dSAndroid Build Coastguard Worker */ 32*90c8c64dSAndroid Build Coastguard Worker public class MainActivity extends FragmentActivity { 33*90c8c64dSAndroid Build Coastguard Worker 34*90c8c64dSAndroid Build Coastguard Worker private BluetoothAdapter mBluetoothAdapter; 35*90c8c64dSAndroid Build Coastguard Worker 36*90c8c64dSAndroid Build Coastguard Worker @Override onCreate(Bundle savedInstanceState)37*90c8c64dSAndroid Build Coastguard Worker protected void onCreate(Bundle savedInstanceState) { 38*90c8c64dSAndroid Build Coastguard Worker super.onCreate(savedInstanceState); 39*90c8c64dSAndroid Build Coastguard Worker setContentView(R.layout.activity_main); 40*90c8c64dSAndroid Build Coastguard Worker setTitle(R.string.activity_main_title); 41*90c8c64dSAndroid Build Coastguard Worker 42*90c8c64dSAndroid Build Coastguard Worker if (savedInstanceState == null) { 43*90c8c64dSAndroid Build Coastguard Worker 44*90c8c64dSAndroid Build Coastguard Worker mBluetoothAdapter = ((BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE)) 45*90c8c64dSAndroid Build Coastguard Worker .getAdapter(); 46*90c8c64dSAndroid Build Coastguard Worker 47*90c8c64dSAndroid Build Coastguard Worker // Is Bluetooth supported on this device? 48*90c8c64dSAndroid Build Coastguard Worker if (mBluetoothAdapter != null) { 49*90c8c64dSAndroid Build Coastguard Worker 50*90c8c64dSAndroid Build Coastguard Worker // Is Bluetooth turned on? 51*90c8c64dSAndroid Build Coastguard Worker if (mBluetoothAdapter.isEnabled()) { 52*90c8c64dSAndroid Build Coastguard Worker 53*90c8c64dSAndroid Build Coastguard Worker // Are Bluetooth Advertisements supported on this device? 54*90c8c64dSAndroid Build Coastguard Worker if (mBluetoothAdapter.isMultipleAdvertisementSupported()) { 55*90c8c64dSAndroid Build Coastguard Worker 56*90c8c64dSAndroid Build Coastguard Worker // Everything is supported and enabled, load the fragments. 57*90c8c64dSAndroid Build Coastguard Worker setupFragments(); 58*90c8c64dSAndroid Build Coastguard Worker 59*90c8c64dSAndroid Build Coastguard Worker } else { 60*90c8c64dSAndroid Build Coastguard Worker 61*90c8c64dSAndroid Build Coastguard Worker // Bluetooth Advertisements are not supported. 62*90c8c64dSAndroid Build Coastguard Worker showErrorText(R.string.bt_ads_not_supported); 63*90c8c64dSAndroid Build Coastguard Worker } 64*90c8c64dSAndroid Build Coastguard Worker } else { 65*90c8c64dSAndroid Build Coastguard Worker 66*90c8c64dSAndroid Build Coastguard Worker // Prompt user to turn on Bluetooth (logic continues in onActivityResult()). 67*90c8c64dSAndroid Build Coastguard Worker Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); 68*90c8c64dSAndroid Build Coastguard Worker startActivityForResult(enableBtIntent, Constants.REQUEST_ENABLE_BT); 69*90c8c64dSAndroid Build Coastguard Worker } 70*90c8c64dSAndroid Build Coastguard Worker } else { 71*90c8c64dSAndroid Build Coastguard Worker 72*90c8c64dSAndroid Build Coastguard Worker // Bluetooth is not supported. 73*90c8c64dSAndroid Build Coastguard Worker showErrorText(R.string.bt_not_supported); 74*90c8c64dSAndroid Build Coastguard Worker } 75*90c8c64dSAndroid Build Coastguard Worker } 76*90c8c64dSAndroid Build Coastguard Worker } 77*90c8c64dSAndroid Build Coastguard Worker 78*90c8c64dSAndroid Build Coastguard Worker @Override onActivityResult(int requestCode, int resultCode, Intent data)79*90c8c64dSAndroid Build Coastguard Worker protected void onActivityResult(int requestCode, int resultCode, Intent data) { 80*90c8c64dSAndroid Build Coastguard Worker super.onActivityResult(requestCode, resultCode, data); 81*90c8c64dSAndroid Build Coastguard Worker switch (requestCode) { 82*90c8c64dSAndroid Build Coastguard Worker case Constants.REQUEST_ENABLE_BT: 83*90c8c64dSAndroid Build Coastguard Worker 84*90c8c64dSAndroid Build Coastguard Worker if (resultCode == RESULT_OK) { 85*90c8c64dSAndroid Build Coastguard Worker 86*90c8c64dSAndroid Build Coastguard Worker // Bluetooth is now Enabled, are Bluetooth Advertisements supported on 87*90c8c64dSAndroid Build Coastguard Worker // this device? 88*90c8c64dSAndroid Build Coastguard Worker if (mBluetoothAdapter.isMultipleAdvertisementSupported()) { 89*90c8c64dSAndroid Build Coastguard Worker 90*90c8c64dSAndroid Build Coastguard Worker // Everything is supported and enabled, load the fragments. 91*90c8c64dSAndroid Build Coastguard Worker setupFragments(); 92*90c8c64dSAndroid Build Coastguard Worker 93*90c8c64dSAndroid Build Coastguard Worker } else { 94*90c8c64dSAndroid Build Coastguard Worker 95*90c8c64dSAndroid Build Coastguard Worker // Bluetooth Advertisements are not supported. 96*90c8c64dSAndroid Build Coastguard Worker showErrorText(R.string.bt_ads_not_supported); 97*90c8c64dSAndroid Build Coastguard Worker } 98*90c8c64dSAndroid Build Coastguard Worker } else { 99*90c8c64dSAndroid Build Coastguard Worker 100*90c8c64dSAndroid Build Coastguard Worker // User declined to enable Bluetooth, exit the app. 101*90c8c64dSAndroid Build Coastguard Worker Toast.makeText(this, R.string.bt_not_enabled_leaving, 102*90c8c64dSAndroid Build Coastguard Worker Toast.LENGTH_SHORT).show(); 103*90c8c64dSAndroid Build Coastguard Worker finish(); 104*90c8c64dSAndroid Build Coastguard Worker } 105*90c8c64dSAndroid Build Coastguard Worker 106*90c8c64dSAndroid Build Coastguard Worker default: 107*90c8c64dSAndroid Build Coastguard Worker super.onActivityResult(requestCode, resultCode, data); 108*90c8c64dSAndroid Build Coastguard Worker } 109*90c8c64dSAndroid Build Coastguard Worker } 110*90c8c64dSAndroid Build Coastguard Worker setupFragments()111*90c8c64dSAndroid Build Coastguard Worker private void setupFragments() { 112*90c8c64dSAndroid Build Coastguard Worker FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); 113*90c8c64dSAndroid Build Coastguard Worker 114*90c8c64dSAndroid Build Coastguard Worker ScannerFragment scannerFragment = new ScannerFragment(); 115*90c8c64dSAndroid Build Coastguard Worker // Fragments can't access system services directly, so pass it the BluetoothAdapter 116*90c8c64dSAndroid Build Coastguard Worker scannerFragment.setBluetoothAdapter(mBluetoothAdapter); 117*90c8c64dSAndroid Build Coastguard Worker transaction.replace(R.id.scanner_fragment_container, scannerFragment); 118*90c8c64dSAndroid Build Coastguard Worker 119*90c8c64dSAndroid Build Coastguard Worker AdvertiserFragment advertiserFragment = new AdvertiserFragment(); 120*90c8c64dSAndroid Build Coastguard Worker transaction.replace(R.id.advertiser_fragment_container, advertiserFragment); 121*90c8c64dSAndroid Build Coastguard Worker 122*90c8c64dSAndroid Build Coastguard Worker transaction.commit(); 123*90c8c64dSAndroid Build Coastguard Worker } 124*90c8c64dSAndroid Build Coastguard Worker showErrorText(int messageId)125*90c8c64dSAndroid Build Coastguard Worker private void showErrorText(int messageId) { 126*90c8c64dSAndroid Build Coastguard Worker 127*90c8c64dSAndroid Build Coastguard Worker TextView view = (TextView) findViewById(R.id.error_textview); 128*90c8c64dSAndroid Build Coastguard Worker view.setText(getString(messageId)); 129*90c8c64dSAndroid Build Coastguard Worker } 130*90c8c64dSAndroid Build Coastguard Worker }