java - टक्ਪ एपीआई एंड्रॉइड दुर्घटना




android crash (2)

आखिरकार मैंने इसे कुछ दिन पहले हल किया था। जैसा कि मैं जावा विशेषज्ञ नहीं हूं, मुझे लगता है कि बग बाम्प पुस्तकालय के भीतर स्थित है। यदि आप एपीआई करते हैं। कॉन्फ़िगर करें जब यह पहले से कॉन्फ़िगर किया गया है तो यह केवल क्रैश है। इसलिए मैंने एक सिंगलटन बना दिया, यह सुनिश्चित करना कि इसे केवल एक बार कहा जाता है

यहां कोड है

public class BumpConnection {

    protected Context context; 
    private IBumpAPI api;
    private static BumpConnection sharedManager;
    public static synchronized BumpConnection getSharedManager(Context context) {
        if (sharedManager == null) {
            sharedManager = new BumpConnection(context);
        }
        return sharedManager;
    }

    private BumpConnection(Context context){
        this.context = context; 
        context.bindService(new Intent(IBumpAPI.class.getName()), connection,
                Context.BIND_AUTO_CREATE);
    }



    public IBumpAPI getApi() {
        return api;
    }

    public void setApi(IBumpAPI api) {
        this.api = api;
    }



    private final ServiceConnection connection = new ServiceConnection() {
        @Override
        public void onServiceConnected(ComponentName className, IBinder binder) {

            Log.i("BumpTest", "onServiceConnected");
            api = IBumpAPI.Stub.asInterface(binder);
            new Thread() {
                public void run() {
                    try {
                        api.configure("9b17d663752843a1bfa4cc72d309339e",
                                "Bump User");
                    } catch (RemoteException e) {
                        Log.w("BumpTest", e);
                    }

                }
            }.start();
            Log.d("Bump Test", "Service connected");
        }

        @Override
        public void onServiceDisconnected(ComponentName className) {
            Log.d("Bump Test", "Service disconnected");
        }
    };
} 

एंड्रॉइड पर टक्ंप एपीआई के साथ मेरी एक बड़ी समस्या है मैं सब कुछ उदाहरण में की तरह सेटअप करता हूं, पहली बार जब मैं अपनी गतिविधि को शुरू कर दूँगा, तो यह काम बहुत अच्छा होता है, अब अगर मैं वापस जाकर इसे फिर से शुरू कर दूं तो यह सिर्फ एक गंभीर सिग्नल त्रुटि के कारण दुर्घटनाग्रस्त हो गया ... यह मैंने फोन करने के ठीक बाद किया बाम्प एपीआई के कॉन्फ़िगरेशन

मुझे इसे फिर से फोन करने की आवश्यकता नहीं है? लेकिन यह जांचने के लिए कुछ नहीं है कि यह पहले से ही कॉन्फ़िगर है या नहीं।

public class BumpActivity extends Activity {
    private IBumpAPI api;
    private ProgressDialog mDialog;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.bump);
        mDialog = ProgressDialog.show(BumpActivity.this, "Preparing bump", "Loading");
        bindService(new Intent(IBumpAPI.class.getName()), connection,
                Context.BIND_AUTO_CREATE);

        IntentFilter filter = new IntentFilter();
        filter.addAction(BumpAPIIntents.CHANNEL_CONFIRMED);
        filter.addAction(BumpAPIIntents.DATA_RECEIVED);
        filter.addAction(BumpAPIIntents.NOT_MATCHED);
        filter.addAction(BumpAPIIntents.MATCHED);
        filter.addAction(BumpAPIIntents.CONNECTED);
        registerReceiver(receiver, filter);

    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
    }

    @Override 
    public void onBackPressed(){
        Intent resultIntent = new Intent();
        setResult(Activity.RESULT_CANCELED, resultIntent);
        super.onBackPressed(); 
    }
    private final ServiceConnection connection = new ServiceConnection() {
        @Override
        public void onServiceConnected(ComponentName className, IBinder binder) {

            Log.i("BumpTest", "onServiceConnected");
            api = IBumpAPI.Stub.asInterface(binder);
            new Thread() {
                public void run() {
                    try {
                        api.configure("9b17d663752843a1bfa4cc72d309339e",
                                "Bump User");
                    } catch (RemoteException e) {
                        Log.w("BumpTest", e);
                    }

                }
            }.start();
            Log.d("Bump Test", "Service connected");
        }

        @Override
        public void onServiceDisconnected(ComponentName className) {
            Log.d("Bump Test", "Service disconnected");
        }
    };

    private final BroadcastReceiver receiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            final String action = intent.getAction();
            try {
                if (action.equals(BumpAPIIntents.DATA_RECEIVED)) {
                    getUserDetailFromBump(new String(
                            intent.getByteArrayExtra("data")));
                } else if (action.equals(BumpAPIIntents.MATCHED)) {
                    long channelID = intent
                            .getLongExtra("proposedChannelID", 0);
                    Log.i("Bump Test",
                            "Matched with: "
                                    + api.userIDForChannelID(channelID));
                    api.confirm(channelID, true);
                    Toast toast = Toast.makeText(
                            getApplicationContext(),
                            "Matched with: "
                                    + api.userIDForChannelID(channelID),
                            Toast.LENGTH_SHORT);
                    toast.show();
                } else if (action.equals(BumpAPIIntents.CHANNEL_CONFIRMED)) {
                    long channelID = intent.getLongExtra("channelID", 0);
                    api.send(channelID, CurrentUserManager.getSharedManager()
                            .getCurrentUser().getUserId().toString().getBytes());
                } else if (action.equals(BumpAPIIntents.NOT_MATCHED)) {
                    Toast toast = Toast.makeText(getApplicationContext(),
                            "No match", Toast.LENGTH_SHORT);
                    toast.show();
                } else if (action.equals(BumpAPIIntents.CONNECTED)) {
                    mDialog.dismiss(); 
                    api.enableBumping();
                }
            } catch (RemoteException e) {
            }
        }
    };

    public void getUserDetailFromBump(String data) {
        Log.i("User Id", data); 
        LoginRequest login = new LoginRequest(getApplicationContext());
        Log.i("Token", login.getArchivedToken()); 
        AsyncHttpClient restRequest = new AsyncHttpClient();
        PersistentCookieStore cookie = new PersistentCookieStore(getApplicationContext()); 
        restRequest.setCookieStore(cookie); 
        RequestParams params = new RequestParams();
        params.put("auth_token", login.getArchivedToken()); 
        params.put("user_id", data); 
        Log.i("Request", "Preparing"); 
        restRequest.get(Constantes.API_URL + "users/show.json", params, new AsyncHttpResponseHandler(){
            public void onSuccess(String response) {
                Log.i("Reponse", response); 
                try {
                    User user = new User(new JSONObject(response));
                    Log.i("User", user.toString()); 
                    //Driver
                    if (CurrentUserManager.getSharedManager().getCurrentUser().getType() == 1){
                        CurrentRouteManager.getSharedManager().getCurrentRoute().addPassanger(user); 
                        Intent resultIntent = new Intent(BumpActivity.this, DriverActivity.class);
                        resultIntent.putExtra("PASSENGER_ADDED", true); 
                        setResult(1, resultIntent);
                        finish(); 
                    }
                    else{
                        Intent p = new Intent(BumpActivity.this, RoutePassenger.class); 
                        p.putExtra("driver", user); 
                        startActivity(p); 
                    }
                } catch (JSONException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } 
            }

            @Override
            public void onFailure(Throwable e) {
                Log.i("Error", e.toString()); 
            }

        }); 

    }

    public void onStart() {
        Log.i("BumpTest", "onStart");
        super.onStart();
    }

    public void onRestart() {
        Log.i("BumpTest", "onRestart");
        super.onRestart();
    }

    public void onResume() {
        Log.i("BumpTest", "onResume");

        super.onResume();
    }

    public void onPause() {
        Log.i("BumpTest", "onPause");
        try {
            api.disableBumping();

        } catch (RemoteException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } 
        super.onPause();
    }

    public void onStop() {
        Log.i("BumpTest", "onStop");
        try {
            api.disableBumping();

        } catch (RemoteException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } 
        super.onStop();
    }

    public void onDestroy() {
        Log.i("BumpTest", "onDestroy");
        try {
            api.disableBumping();

        } catch (RemoteException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } 
        unbindService(connection);
        unregisterReceiver(receiver);
        super.onDestroy();
    }

}

गिट हब पर उपलब्ध नवीनतम बॉम्पी एपीआई का प्रयोग करें, README.md फ़ाइल को सावधानीपूर्वक पढ़ें। स्पष्ट रूप से उल्लेख किया गया है कि। एडीएल फ़ाइल का उपयोग करके (जो कि src फ़ोल्डर में उपलब्ध है) पहले कमांड का उपयोग कर इसे संकलित करें

एंड्रॉइड अपडेट प्रोजेक्ट -टी एंड्रॉइड -15 -एल पथ_ टू / बंप-एपीआई-लाइब्रेरी -पी पथ_टो_ऑयर_प्रोजेक्ट /

अपने टर्मिनल में .. अगर आप एक लिनक्स उपयोगकर्ता हैं तो प्लेटफॉर्म-टूल्स पर पथ सेट करें, तो इस कमान के साथ ./adb का उपयोग करें।

फिर प्रोजेक्ट को रीफ्रेश करें, इस लाइब्रेरी प्रोजेक्ट को अपनी टेस्ट बंप प्रोजेक्ट में लायब्रेरी के रूप में सेट करें .. इसके अलावा आपको अपनी बाइपिपी कुंजी को ईमेल के माध्यम से प्राप्त करें





bump