OnItemClickListener에 문제가 있습니다. 예를 들어 , 내가 목록에서 4 개 블루투스 장치가, 내가 하나 개의 요소를 클릭하고 응용 프로그램이없는 내가 당신의 onItemClick 당신에Listview 및 OnItemClickListener (Bluetooth 장치)
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import java.lang.reflect.Method;
import java.util.ArrayList;
public class bluetooth extends AppCompatActivity {
private ListView listView;
private ArrayList<String> mDeviceList = new ArrayList<String>();
private BluetoothAdapter mBluetoothAdapter;
private final static int REQUEST_ENABLE_BT=1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.bluetooth);
listView = (ListView) findViewById(R.id.listView);
mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
mBluetoothAdapter.startDiscovery();
IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
registerReceiver(mReceiver, filter);
if(!mBluetoothAdapter.isEnabled())
{
Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
mBluetoothAdapter.startDiscovery();
registerReceiver(mReceiver, filter);
}
}
@Override
protected void onDestroy() {
unregisterReceiver(mReceiver);
super.onDestroy();
}
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
public void onReceive(Context context, final Intent intent) {
final BluetoothDevice device = intent
.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
String action = intent.getAction();
if (BluetoothDevice.ACTION_FOUND.equals(action)) {
BluetoothDevice bluetoothDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
mDeviceList.add(bluetoothDevice.getName() + "\n"
+ bluetoothDevice.getAddress());
listView.setAdapter(new ArrayAdapter<String>(context,
android.R.layout.simple_list_item_1, mDeviceList));
}
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapter, View view, int pos, long id){
String devicep=listView.getAdapter().getItem(pos).toString();
Log.i("device",devicep);
pairDevice(device);
}
});
}
};
private void pairDevice(BluetoothDevice b1) {
try {
Method method = b1.getClass().getMethod("createBond", (Class[]) null);
method.invoke(b1, (Object[]) null);
} catch (Exception e) {
e.printStackTrace();
}
}
}
아니, 그것은 작동하지 않습니다 의 캐스팅이 허용되지 않기 때문에 응용 프로그램이 작동하지 않습니다. – luc
아아 이제는 DeviceList가 문자열 대신 BluetoothDevices 목록으로 BluetoothDevice로 변경되었으며 목록에 bluetooth 장치를 추가하면 내 코드가 작동해야한다고 생각했습니다. – Gabe