2017-09-01 175 views
0

我按照此tutorial使用手機點亮LED。 但是我有一個錯誤在此代碼:Android Studio不兼容類型

package com.irobotechart.controlbt; 

import android.bluetooth.BluetoothAdapter; 
import android.bluetooth.BluetoothDevice; 
import android.content.Intent; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 
import android.widget.TextView; 
import android.widget.Toast; 

import java.util.Set; 

public class DevicesBT extends AppCompatActivity { 

    //1) 
    // Depuración de LOGCAT 
    private static final String TAG = "DevicesBT"; //<-<- PARTE A MODIFICAR >->-> 
    // Declaracion de ListView 
    ListView IdLista; 
    // String que se enviara a la actividad principal, mainactivity 
    public static String EXTRA_DEVICE_ADDRESS = "device_address"; 

    // Declaracion de campos 
    private BluetoothAdapter mBtAdapter; 
    private ArrayAdapter mPairedDevicesArrayAdapter; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_devices_bt); 
    } 

    @Override 
    public void onResume() 
    { 
     super.onResume(); 
     //--------------------------------- 
     VerificarEstadoBT(); 

     // Inicializa la array que contendra la lista de los dispositivos bluetooth vinculados 
     mPairedDevicesArrayAdapter = new ArrayAdapter(this, R.layout.name_devices);//<-<- PARTE A MODIFICAR >->-> 
     // Presenta los disposisitivos vinculados en el ListView 
     IdLista = (ListView) findViewById(R.id.IdList); 
     IdLista.setAdapter(mPairedDevicesArrayAdapter); 
     IdLista.setOnItemClickListener(mDeviceClickListener); 
     // Obtiene el adaptador local Bluetooth adapter 
     mBtAdapter = BluetoothAdapter.getDefaultAdapter(); 
     // Obtiene un conjunto de dispositivos actualmente emparejados y agregua a 'pairedDevices' 
     Set pairedDevices = mBtAdapter.getBondedDevices(); 
     // Adiciona un dispositivos previo emparejado al array 
     if (pairedDevices.size() > 0) 
     { 
      for (BluetoothDevice device : pairedDevices) { 
       mPairedDevicesArrayAdapter.add(device.getName() + "\n" + device.getAddress()); 
      } 
     } 
    } 

    // Configura un (on-click) para la lista 
    private AdapterView.OnItemClickListener mDeviceClickListener = new AdapterView.OnItemClickListener() { 
     public void onItemClick(AdapterView av, View v, int arg2, long arg3) { 

      // Obtener la dirección MAC del dispositivo, que son los últimos 17 caracteres en la vista 
      String info = ((TextView) v).getText().toString(); 
      String address = info.substring(info.length() - 17); 

      // Realiza un intent para iniciar la siguiente actividad 
      // mientras toma un EXTRA_DEVICE_ADDRESS que es la dirección MAC. 
      Intent i = new Intent(DevicesBT.this, UserInterface.class);//<-<- PARTE A MODIFICAR >->-> 
      i.putExtra(EXTRA_DEVICE_ADDRESS, address); 
      startActivity(i); 
     } 
    }; 

    private void VerificarEstadoBT() { 
     // Comprueba que el dispositivo tiene Bluetooth y que está encendido. 
     mBtAdapter= BluetoothAdapter.getDefaultAdapter(); 
     if(mBtAdapter==null) { 
      Toast.makeText(getBaseContext(), "El dispositivo no soporta Bluetooth", Toast.LENGTH_SHORT).show(); 
     } else { 
      if (mBtAdapter.isEnabled()) { 
       Log.d(TAG, "...Bluetooth Activado..."); 
      } else { 
       //Solicita al usuario que active Bluetooth 
       Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); 
       startActivityForResult(enableBtIntent, 1); 

      } 
     } 
    } 
} 

的錯誤是:不兼容類型:實測: 'android.bluetooth.BluetoothDevice',要求: 'java.lang.Object繼承'

我不我知道如何解決這個問題。

預先感謝您的幫助

我希望是明確的,我如果有錯誤

回答

1

已經使用了原始型Set,而不是generic平均遺憾,同時使用你的集合可以定義的數據類型,如果你不那麼確定的類型將是Object

所以使用

Set<BluetoothDevice> pairedDevices = mBtAdapter.getBondedDevices(); 

,而不是

Set pairedDevices = mBtAdapter.getBondedDevices(); 

注:從onresume刪除mBtAdapter = BluetoothAdapter.getDefaultAdapter();它是多餘的,已經在VerificarEstadoBT()


做進一步的瞭解

What is a raw type and why shouldn't we use it?