2015-02-16 6 views
0

Я пытаюсь разработать собственный код в Codename One для считывания данных датчика акселерометра. Я посмотрел, как это делается в коде Android Java, реализовал его в Codename One, скомпилирован без ошибок, но, похоже, даже не прошел процедуру инициализации класса датчика ниже. Метод sensor.startReading(), кажется, никогда не называется. Правильно ли я использовал собственный код считывания акселерометра?Как реализовать собственный код чтения акселератора в Codename 1 для Android?

Вот как я называю датчик метод класса считывания:

Sensor sensor = (Sensor)NativeLookup.create(Sensor.class); 
    if (sensor != null && sensor.isSupported()) { 
     sensor.startReading(); 
} 

Вот как я реализую датчик считывания:

package com.pk.sensors; 

import android.app.Activity; 
import android.hardware.Sensor; 
import android.hardware.SensorManager; 
import android.hardware.SensorEventListener; 
import android.hardware.SensorEvent; 
import android.content.Context; 

public class SensorImpl extends Activity implements SensorEventListener { 

private SensorManager mSensorManager; 
private Sensor mAccelerometer; 
private float accelX = 0f; 
private float accelY = 0f; 
private float accelZ = 0f; 

public void startReading() { 
    mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); 
    mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); 
    mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_NORMAL); 
} 

public void onSensorChanged(SensorEvent event) { 
    this.accelX = event.values[0]; 
    this.accelY = event.values[1]; 
    this.accelZ = event.values[2]; 
} 

public String getAcceleration() { 
    return String.valueOf(this.accelX) + " " + 
      String.valueOf(this.accelY) + " " + 
      String.valueOf(this.accelZ); 
} 

public boolean isSupported() { 
    return true; 
} 

protected void onResume() { 
    super.onResume(); 
    mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_NORMAL); 
} 

protected void onPause() { 
    super.onPause(); 
    mSensorManager.unregisterListener(this); 
} 

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

Это учебник я реализовал ускоритель считывания с: http://www.techrepublic.com/blog/software-engineer/a-quick-tutorial-on-coding-androids-accelerometer/

ответ

2

Не продлевать действие, в CodenameOne есть 1 основное действие, и вы должны использовать это. Получить ссылку на эту деятельность, как это:

android.app.Activity ctx = com.codename1.impl.android.AndroidNativeUtil.getActivity(); 

Тогда получите услугу:

mSensorManager = (SensorManager) ctx.getSystemService(Context.SENSOR_SERVICE); 
+0

Это подействовало. Спасибо! – pkout

+0

Если у меня может возникнуть следующий важный вопрос: мои Netbeans не распознают com.codename1.impl.android. Он останавливается на имплантате. Однако он работает на сервере сборки Codename 1. Он компилируется там просто отлично. Нужно ли устанавливать некоторые дополнительные библиотеки для моей IDE для распознавания пространства имен? – pkout

+0

Нет, отлично, что IDE не распознает это. – Chen

 Смежные вопросы

  • Нет связанных вопросов^_^