Клиент Teliver не запускается в android studio - PullRequest
0 голосов
/ 04 апреля 2020

На самом деле в моем коде нет ошибок, и тот же набор кода работает правильно, если он создается отдельно. Но когда они интегрированы как модуль в другое приложение, это показывает ошибку, как это !!! Это код для отслеживания в реальном времени с использованием ключа teliver.

public class FragmentDriver extends Fragment implements TripListener, View.OnClickListener {

    private Activity context;

    private LocationManager manager;

    private View viewRoot;

    private Dialog dialogBuilder;

    private MPreference mPreference;

    private TripsAdapter mAdapter;

    private List<Trip> currentTrips;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_driver, container, false);
    }

    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        context = getActivity();
        Teliver.setTripListener(this);
        mPreference = new MPreference(context);
        viewRoot = view.findViewById(R.id.view_root);
        manager = (LocationManager) context.getSystemService(LOCATION_SERVICE);
        TextView txtTripStatus = (TextView) view.findViewById(R.id.trip_status);
        RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.recycler_view);
        currentTrips = new ArrayList<>();
        //currentTrips.addAll(Teliver.getCurrentTrips());
        recyclerView.setLayoutManager(new LinearLayoutManager(context));

        mAdapter = new TripsAdapter(context);
        mAdapter.setData(currentTrips, this);
        recyclerView.setAdapter(mAdapter);

        GoogleApiAvailability apiAvailability = GoogleApiAvailability.getInstance();
        int resultCode = apiAvailability.isGooglePlayServicesAvailable(context);
        if (resultCode != ConnectionResult.SUCCESS &&
                apiAvailability.isUserResolvableError(resultCode)) {
            Dialog dialog = apiAvailability.getErrorDialog(context, resultCode,
                    900);
            dialog.setCancelable(false);
            dialog.show();
        }
        txtTripStatus.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (Utils.checkPermission(context))
                    validateTrip();
            }
        });
    }

    public void validateTrip() {
        try {
            String provider = manager.getBestProvider(new Criteria(), true);
            if ((!TextUtils.isEmpty(provider)) &&
                    LocationManager.PASSIVE_PROVIDER.equals(provider))
                Utils.showLocationAlert(context);
            else {
                dialogBuilder = new Dialog(context);
                dialogBuilder.getWindow().setBackgroundDrawable(new ColorDrawable(
                        ContextCompat.getColor(context, android.R.color.transparent)));
                dialogBuilder.setContentView(R.layout.view_tracking);
                final EditText edtId =  dialogBuilder.findViewById(R.id.edt_id);
                final EditText edtTitle =  dialogBuilder.findViewById(R.id.edt_title);
                final EditText edtMsg =  dialogBuilder.findViewById(R.id.edt_msg);
                final EditText edtUserId =  dialogBuilder.findViewById(R.id.edt_user_id);
                final TextView btnOk =  dialogBuilder.findViewById(R.id.btn_ok);
                btnOk.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        startTrip(edtTitle.getText().toString(), edtMsg.getText().toString(),
                                edtUserId.getText().toString().trim(), edtId.getText().toString().trim());
                    }
                });
                dialogBuilder.show();
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private void startTrip(String title, String msg, String userId, String trackingId) {
        try {
            if (trackingId.isEmpty())
                Utils.showSnack(viewRoot, getString(R.string.text_enter_valid_id));
            else if (!Utils.isNetConnected(context))
                Utils.showSnack(viewRoot, getString(R.string.text_no_internet));
            else {
                dialogBuilder.dismiss();
                TripBuilder builder = new TripBuilder(trackingId);
                if (!userId.isEmpty()) {
                    PushData pushData = new PushData(userId.split(","));
                    pushData.setPayload(msg);
                    pushData.setMessage(title);
                    builder.withUserPushObject(pushData);
                }
                Teliver.startTrip(builder.build());
                Utils.showSnack(viewRoot, getString(R.string.txt_wait_start_trip));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Override
    public void onTripStarted(Trip tripDetails) {
        Log.d("Driver:", "Trip started::" + tripDetails);
        changeStatus(tripDetails.getTrackingId(), true);
    }

    @Override
    public void onLocationUpdate(Location location) {

    }

    @Override
    public void onTripEnded(String trackingId) {
        Log.d("Driver:", "Trip Ended::" + trackingId);
        changeStatus(null, false);
    }


    private void changeStatus(String id, boolean status) {
        mPreference.storeBoolean(Constants.IS_TRIP_ACTIVE, status);
        mPreference.storeString(Constants.TRACKING_ID, id);
        currentTrips.clear();
        //currentTrips.addAll(Teliver.getCurrentTrips());
        mAdapter.notifyDataSetChanged();
    }

    @Override
    public void onTripError(String reason) {
        Log.d("Driver:", "Trip error: Reason: " + reason);
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String permissions[],
                                           @NonNull int[] grantResults) {
        if (requestCode != Constants.PERMISSION_REQ_CODE)
            return;
        if (grantResults[0] == PackageManager.PERMISSION_GRANTED)
            validateTrip();
        else
            CustomToast.showToast(context, getString(R.string.text_location_permission));
    }


    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.stop:
                try {

                    Teliver.stopTrip(v.getTag().toString());
                    Utils.showSnack(viewRoot,getString(R.string.txt_wait_stop_trip));

                } catch (Exception e) {
                    e.printStackTrace();
                }

                break;
            default:
                break;
        }
    }


}

И этот код полностью не работает, если эта строка существует, во время интеграции currentTrips.addAll (Teliver.getCurrentTrips ());

Код выполняется правильно, пока закуска startTrip. Но функция onTripStarted () не вызывается. Я не могу найти причину. Пожалуйста, помогите мне с этим !!!

...