मैं एंड्रॉइड ऐप्स विकसित करने के लिए बहुत नया हूं, और मुझे उम्मीद है कि मैं इसे सही जगह पर पोस्ट कर रहा हूं। मैं अपने ब्लूटूथ मॉड्यूल से कनेक्ट करने के लिए फोन ब्लूटूथ कैसे प्राप्त करना सीखने की कोशिश कर रहा हूं। मैं एक संदर्भ पुस्तक में पाया गया कोड का उपयोग करने की कोशिश कर रहा हूं, लेकिन यह मुझे एक त्रुटि दे रहा है। मैंने पहले जावा में लिखा है लेकिन मुझे एंड्रॉइड ऐप की संरचना को समझने में कठिनाई हो रही है। वैसे भी मुझे जो त्रुटि मिल रही है वह अज्ञात त्रुटि है: java.lang.nullPointerException। क्या मैं शायद एक पुस्तकालय आयात करना भूल रहा हूं जिसकी मुझे आवश्यकता है, या जब मैंने प्रोजेक्ट बनाया था तो क्या मैंने पैकेजिंग गलती की थी?शुरुआती डेवलपर: अज्ञात त्रुटि: java.lang.nullPointerException
package android.app.bluetooth;
//import java.io.InputStream;
//import java.io.OutputStream;
import java.util.ArrayList;
import java.util.UUID;
import java.io.IOException;
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
//import android.os.Handler;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothServerSocket;
import android.bluetooth.BluetoothSocket;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
//import android.view.View.OnKeyListener;
import android.widget.ArrayAdapter;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.AdapterView.OnItemClickListener;
public class bluetooth extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//Get the bluetooth adapter (phone)
configureBluetooth();
//Setup ListView of discovered devices
setupListView();
//Setup search button
setupSearchButton();
//Setup listen button
setupListenButton();
}
private BluetoothAdapter bluetooth;
private BluetoothSocket socket;
private UUID uuid = UUID.fromString("985c75a3-66ae-4b5b-9fac-894659d6f6ee");
private void configureBluetooth(){
BluetoothAdapter bluetooth = BluetoothAdapter.getDefaultAdapter();
}
//Create switchUI method that will be called once a connection is
//established to enable views for reading and writing messages
private ListView list;
private void switchUI(){
final TextView messageText = (TextView)findViewById(R.id.text_messages);
final EditText textEntry = (EditText)findViewById(R.id.text_message);
messageText.setVisibility(View.VISIBLE);
list.setVisibility(View.GONE);
textEntry.setEnabled(true);
}
//Create server listener. Listen button will prompt user to enable discovery
//When discovery window returns, open bluetooth socket to listen for connection requests for discovery duration
//Once a connection has been made, make a call to switchUI
private static int DISCOVERY_REQUEST = 1;
private void setupListenButton(){
Button listenButton = (Button)findViewById(R.id.button_listen);
listenButton.setOnClickListener(new OnClickListener(){
public void onClick(View view){
Intent disc;
disc = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
startActivityForResult(disc, DISCOVERY_REQUEST);
}
});
}
//Find out if user has accepted or rejected the request
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
if(requestCode == DISCOVERY_REQUEST){
boolean isDiscoverable = resultCode > 0;
if (isDiscoverable){
String name = "bluetoothserver";
try{
final BluetoothServerSocket btserver = bluetooth.listenUsingRfcommWithServiceRecord(name, uuid);
AsyncTask<Integer, Void, BluetoothSocket> acceptThread = new AsyncTask<Integer, Void, BluetoothSocket>(){
@Override
protected BluetoothSocket doInBackground(Integer ... params){
try{
socket = btserver.accept(params[0]*1000);
return socket;
} catch (IOException e){
Log.d("BLUETOOTH", e.getMessage());
}
return null;
}
@Override
protected void onPostExecute(BluetoothSocket result){
if (result != null)
switchUI();
}
};
acceptThread.execute(resultCode);
} catch (IOException e){
Log.d("BLUETOOTH", e.getMessage());
}
}
//int discoverableDuration = resultCode;
}
}
//Provide a means for client device to search for listening server
private ArrayAdapter<BluetoothDevice> aa;
private ArrayList<BluetoothDevice> foundDevices;
private void setupListView(){
aa = new ArrayAdapter<BluetoothDevice>(this, android.R.layout.simple_list_item_1, foundDevices);
list = (ListView)findViewById(R.id.list_discovered);
list.setAdapter(aa);
//Include onItemClickListener that will attempt to asynchronously initiate a client-side connection
//with the selected remote Bluetooth Device
//If successful, keep a reference to the socket it creates and make a call to switchUI
list.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View view, int index, long arg3){
AsyncTask<Integer, Void, Void> connectTask = new AsyncTask<Integer, Void, Void>(){
@Override
protected Void doInBackground(Integer ... params){
try{
BluetoothDevice device = foundDevices.get(params[0]);
socket = device.createRfcommSocketToServiceRecord(uuid);
socket.connect();
} catch(IOException e){
Log.d("BLUETOOTH_CLIENT", e.getMessage());
}
return null;
}
@Override
protected void onPostExecute(Void result){
switchUI();
}
};
connectTask.execute(index);
}
});
}
//Create a broadcast receiver that listens for Bluetooth Device discovery broadcasts,
//adds each discovered device to the array of found devices and notifies the Array Adapter
//Discover remote bluetooth devices
BroadcastReceiver discoveryResult = new BroadcastReceiver(){
@Override
public void onReceive(Context context, Intent intent){
//String remoteDeviceName = intent.getStringName = intent.getStringExtra(BluetoothDevice.EXTRA_NAME);
BluetoothDevice remoteDevice; //remote bluetooth device
remoteDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
if(bluetooth.getBondedDevices().contains(remoteDevice)){
foundDevices.add(remoteDevice);
aa.notifyDataSetChanged();
}
}
};
//Register Broadcast Receiver and initiate discovery session
private void setupSearchButton(){
Button searchButton = (Button)findViewById(R.id.button_search);
searchButton.setOnClickListener(new OnClickListener(){
public void onClick(View view){
registerReceiver(discoveryResult, new IntentFilter(BluetoothDevice.ACTION_FOUND));
if (!bluetooth.isDiscovering()){
foundDevices.clear();
bluetooth.startDiscovery();
}
}
});
}
}
यह लेआउट फ़ाइल है::
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<EditText
android:id="@+id/text_message"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:enabled="false"
/>
<Button
android:id="@+id/button_search"
android:text="Search for listener"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_above="@id/text_message"
/>
<Button
android:id="@+id/button_listen"
android:text="Listen for connection"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_above="@id/button_search"
/>
<ListView
android:id="@+id/list_discovered"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_above="@id/button_listen"
android:layout_alignParentTop="true"
/>
<TextView
android:id="@+id/text_messages"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_above="@id/button_listen"
android:layout_alignParentTop="true"
android:visibility="gone"
/>
</RelativeLayout>
और यहाँ मैनिफ़ेस्ट फ़ाइल है: यहाँ कोड है
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
android:versionCode="1"
android:versionName="1.0" package="android.app.bluetooth">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".bluetooth"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
</manifest>
जैसा मैंने कहा कि मैं तो यह करने के लिए बहुत नया हूँ मैं क्षमा चाहता हूं अगर यह ज्यादा समझ में नहीं आता है लेकिन किसी भी मदद की सराहना की जाएगी।
आप सही जगह पर पोस्ट कर रहे हैं। सबसे महत्वपूर्ण बात यह है कि हमें स्टैक ट्रेस देखने की ज़रूरत है जिसके परिणामस्वरूप nullPointerException में परिणाम होता है। कृपया स्टैक ट्रेस के साथ प्रश्न अपडेट करें। (यदि आप एक आयात या संदर्भ खो रहे थे तो प्रोग्राम संकलित नहीं होगा।) – cfeduke
मुझे माफ़ कर दो लेकिन मैं यह कैसे कर सकता हूं? मैंने Thread.dumpStack() जोड़ने की कोशिश की; लेकिन जब मैं प्रोग्राम चलाने की कोशिश करता हूं तो यह कहता है कि 'आपकी प्रोजेक्ट में त्रुटि है) कृपया अपना एप्लिकेशन चलाने से पहले उन्हें ठीक करें। – Patty
लॉगक –