Android-Syncano SDK无法正常工作

old_account

我正在开发一个使用syncano将数据发送到syncano服务器但数据拒绝发送的android应用程序。我们已经验证了发送条件,但它不起作用。这是用于发送数据的活动:

package com.crash.beacon;

import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Button;
import com.crash.beacon.Book;
import com.syncano.library.Syncano;
import com.syncano.library.api.Response;


public class MainActivity extends AppCompatActivity implements SensorEventListener, LocationListener {
    boolean isEnabled = false;
    Button btn;
    private Syncano syncano;
    String[] listItems = new String[]{"Home", "About", "Website"};
    float lat = 0, lng = 0, alt = 0;
    Sensor accel;
    SensorManager manager;
    float x = 0, y = 0, z = 0;
    DrawerLayout dl;
    private ActionBarDrawerToggle mDrawerToggle;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn = (Button)findViewById(R.id.crash);
        syncano = new Syncano("api_key", "late-surf-9471");
        gui(isEnabled);
        manager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
        accel = manager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);

        // Get the location manager
        LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        // Define the criteria how to select the locatioin provider -> use
        // default
        Criteria criteria = new Criteria();
        String provider = locationManager.getBestProvider(criteria, false);

        Location location = locationManager.getLastKnownLocation(provider);

        // Initialize the location fields
        if (location != null) {
           onLocationChanged(location);
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
    public void onCrash(View view){
          isEnabled = !isEnabled;
          gui(isEnabled);



    }
    public void gui(boolean state){
        if(state){
            btn.setText("Enabled");
        }
        else{
            btn.setText("Disabled");
        }
    }

    @Override
    protected void onResume(){
        super.onResume();
        manager.registerListener(this, accel, SensorManager.SENSOR_DELAY_NORMAL);

    }
    @Override
    protected void onPause(){
        super.onPause();
        manager.unregisterListener(this);
    }

    @Override
    public void onSensorChanged(SensorEvent event) {
        x = event.values[0];
        y = event.values[1];
        z = event.values[2];
        //Demo values
        //For actual deployment, use lat, alt, and lng variables
        float hLat = 39, hLng = -75, hAlt = 25;
        final Book book = new Book();
        book.latitude = lat;
        book.longitutde = lng;
        book.altitude = alt;
        book.force_x = x;
        book.force_y = y;
        book.force_y = z;


        if(isEnabled){
            if(Math.abs(x) > 20 && Math.abs(y) > 20 && Math.abs(z) > 20){
            new Network(book, syncano).execute();
            }
        }
    }

    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {

    }
    @Override
    public boolean onPrepareOptionsMenu(Menu menu) {
        return super.onPrepareOptionsMenu(menu);
    }

    @Override
    public void onLocationChanged(Location location) {
        lat = (float)location.getLatitude();
        lng = (float)location.getLongitude();
        alt = (float)location.getAltitude();
    }

    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {

    }

    @Override
    public void onProviderEnabled(String provider) {

    }

    @Override
    public void onProviderDisabled(String provider) {

    }
}

网络.java

package com.crash.beacon;

import android.os.AsyncTask;
import android.util.Log;

import com.syncano.library.Syncano;
import com.syncano.library.api.Response;

import java.util.List;

/**
 * Created by Tienvo on 11/8/2015.
 */
public class Network extends AsyncTask<String, Void, String> {
    Book b;
    Syncano syn;
    public Network(Book book, Syncano syncano){
        this.b = book;
        this.syn = syncano;
    }
    @Override
    protected String doInBackground(String... params) {
       //Response<Book> responseCreateObject = syn.createObject(b).send();
        Log.d("code", String.valueOf(Response.CODE_SUCCESS));
        Response<List<Book>> responseGetBooks = syn.createObject(b).send();
        return "Executed";
    }
}

Book.java

package com.crash.beacon;

import com.syncano.library.annotation.SyncanoClass;
import com.syncano.library.annotation.SyncanoField;
import com.syncano.library.data.SyncanoObject;
/**
 * Created by tom on 11/7/15.
 */
@SyncanoClass(name = "ltds")
public class Book extends SyncanoObject{
    public static final String FIELD_LAT = "latitude";
    public static final String FIELD_LNG = "longitude";
    public static final String FIELD_ALT = "altitude";
    public static final String FIELD_X =   "force_x";
    public static final String FIELD_Y =   "force_y";
    public static final String FIELD_Z =   "force_z";

    @SyncanoField(name = FIELD_LAT)
    public float latitude;

    @SyncanoField(name = FIELD_LNG)
    public float longitutde;

    @SyncanoField(name = FIELD_ALT)
    public float altitude;

    @SyncanoField(name = FIELD_X)
    public float force_x;

    @SyncanoField(name = FIELD_Y)
    public float force_y;

    @SyncanoField(name = FIELD_Z)
    public float force_z;


}
PawełSzymanski

这就是您的发送方法的外观。
创建对象时,结果代码应为HTTP_CODE_CREATED201,响应类型为Response<Book>下载对象时,您的响应代码应为HTTP_CODE_SUCCESS200,响应类型为Response<List<Book>>

    @Override
    protected String doInBackground(String... params) {
        // send object to server
        Response<Book> responseCreateObject = syn.createObject(b).send();
        if (responseCreateObject.getHttpResultCode() == Response.HTTP_CODE_CREATED) {
            Log.d(TAG, "Success. Item created.");
        } else {
            Log.d(TAG, "Fail.");
        }

        // get objects from server
        Response<List<Book>> responseGetObjects = syn.getObjects(Book.class).send();
        if (responseGetObjects.getHttpResultCode() == Response.HTTP_CODE_SUCCESS) {
            List<Book> books = responseGetObjects.getData();
            Log.d(TAG, "Success. Items downloaded: " + books.size());
        } else {
            Log.d(TAG, "Fail.");
        }

        return "Executed";
    }

我稍微简化了您的代码,专注于Syncano连接,它可以正常工作!它在Syncano实例上创建一个对象。

package com.chimeraprime.syncano4libcheck;

import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;

import com.syncano.library.Syncano;
import com.syncano.library.annotation.SyncanoClass;
import com.syncano.library.annotation.SyncanoField;
import com.syncano.library.api.Response;
import com.syncano.library.data.SyncanoObject;

import java.util.List;
import java.util.Random;


public class OtherActivity extends AppCompatActivity {
    private Button btn;
    private Syncano syncano;


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

        syncano = new Syncano("<api_key>", "<instance>");
        btn = (Button) findViewById(R.id.crash);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Random rnd = new Random();

                Book book = new Book();
                book.latitude = rnd.nextFloat();
                book.longitutde = rnd.nextFloat();
                book.altitude = rnd.nextFloat();
                book.force_x = rnd.nextFloat();
                book.force_y = rnd.nextFloat();
                book.force_y = rnd.nextFloat();

                new Network(book, syncano).execute();
            }
        });
    }


    public static class Network extends AsyncTask<String, Void, String> {
        Book b;
        Syncano syn;
        String TAG = Network.class.getSimpleName();

        public Network(Book book, Syncano syncano) {
            this.b = book;
            this.syn = syncano;
        }

        @Override
        protected String doInBackground(String... params) {
            // send object to server
            Response<Book> responseCreateObject = syn.createObject(b).send();
            if (responseCreateObject.getHttpResultCode() == Response.HTTP_CODE_CREATED) {
                Log.d(TAG, "Success. Item created.");
            } else {
                Log.d(TAG, "Fail.");
            }

            // get objects from server
            Response<List<Book>> responseGetObjects = syn.getObjects(Book.class).send();
            if (responseGetObjects.getHttpResultCode() == Response.HTTP_CODE_SUCCESS) {
                List<Book> books = responseGetObjects.getData();
                Log.d(TAG, "Success. Items downloaded: " + books.size());
            } else {
                Log.d(TAG, "Fail.");
            }

            return "Executed";
        }
    }

    @SyncanoClass(name = "ltds")
    public class Book extends SyncanoObject {
        public static final String FIELD_LAT = "latitude";
        public static final String FIELD_LNG = "longitude";
        public static final String FIELD_ALT = "altitude";
        public static final String FIELD_X = "force_x";
        public static final String FIELD_Y = "force_y";
        public static final String FIELD_Z = "force_z";

        @SyncanoField(name = FIELD_LAT)
        public float latitude;

        @SyncanoField(name = FIELD_LNG)
        public float longitutde;

        @SyncanoField(name = FIELD_ALT)
        public float altitude;

        @SyncanoField(name = FIELD_X)
        public float force_x;

        @SyncanoField(name = FIELD_Y)
        public float force_y;

        @SyncanoField(name = FIELD_Z)
        public float force_z;
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Syncano Android SDK-类对象中的引用字段

来自分类Dev

Android Facebook SDK V4.0无法正常工作

来自分类Dev

Android Studio SDK JUnit测试无法正常工作

来自分类Dev

vlc-android-sdk:3.0.0无法正常工作的示例

来自分类Dev

Android AccelerateDecelerateInterpolator无法正常工作

来自分类Dev

Android ScrollView无法正常工作

来自分类Dev

Android HttpResponseCache无法正常工作

来自分类Dev

Android mkdirs()无法正常工作

来自分类Dev

Android on Onclick无法正常工作

来自分类Dev

Android Listview无法正常工作?

来自分类Dev

Android weightsum无法正常工作

来自分类Dev

Android GeomagneticField无法正常工作

来自分类Dev

setTitle无法正常工作的Android

来自分类Dev

Android onConfigurationChanged无法正常工作

来自分类Dev

Android意向无法正常工作

来自分类Dev

Android TimePicker无法正常工作

来自分类Dev

httpPost无法正常工作的android

来自分类Dev

Android版式无法正常工作

来自分类Dev

android图形无法正常工作

来自分类Dev

Android setOnEditorActionListener无法正常工作

来自分类Dev

“ android:maxSdkVersion”无法正常工作

来自分类Dev

setTitle无法正常工作的Android

来自分类Dev

Android RadioGroup无法正常工作

来自分类Dev

没有Facebook应用的Android Facebook SDK 4登录无法正常工作

来自分类Dev

DirectionsApiRequest在SDK 26 Android手机下无法正常工作

来自分类Dev

DirectionsApiRequest在SDK 26 Android手机下无法正常工作

来自分类Dev

带有自定义类的Syncano Android社交登录错误

来自分类Dev

android:layout_below无法正常工作

来自分类Dev

Android:Firebase ChildEventListener()无法正常工作