Реализация акселерометра в приложении Android - PullRequest
0 голосов
/ 19 января 2020

У меня есть очень простой файл MainActivity.smali, который я хочу в конечном итоге вызвать MainService.smali. Это не проблема. Проблема возникает, когда я пытаюсь написать код, чтобы событие датчика акселерометра вызывало MainService.smali.

Я использую стандартный текстовый редактор и apktool для декомпиляции и сборки своих пакетов. Пакет не может быть собран из-за ошибок, таких как:

test/smali/com/home/launch/MainActivity.smali[5,0] missing EOF at 'public'
Could not smali file: com/home/launch/MainActivity.smali

Главный вопрос в том, как правильно реализовать этот код датчика SensorEvent акселерометра?

Я был бы очень признателен, если бы кто-то помог мне понять, что я я делаю что-то не так, как я пытаюсь узнать это заранее спасибо.

Это рабочий код, который я использую для вызова MainService.smali:

.class public Lcom/home/launch/MainActivity;
.super Landroid/app/Activity;


# direct methods
.method public constructor <init>()V
    .locals 0

    invoke-direct {p0}, Landroid/app/Activity;-><init>()V

    return-void
.end method


# virtual methods
.method protected onCreate(Landroid/os/Bundle;)V
    .locals 0

    invoke-super {p0, p1}, Landroid/app/Activity;->onCreate(Landroid/os/Bundle;)V

    invoke-static {p0}, Lcom/home/launch/MainService;->startService(Landroid/content/Context;)V

    invoke-virtual {p0}, Lcom/home/launch/MainActivity;->finish()V

    return-void
.end method

Это то, что код выглядит например, когда я пытаюсь реализовать SensorEvent:

.class public Lcom/home/launch/MainActivity;
.super Landroid/app/Activity;


public class MainActivity extends AppCompatActivity implements SensorEventListener{

    private static final String TAG = "MainActivity";

    private SensorManager sensorManager;
    sensor accelerometer;

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

        sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);

        accelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
        sensorManager.registerListener(MainActivity.this, acceleeometer, 
SensorManager.SENSOR_DELAY_NORMAL);
    }

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

}

@Override
public void onSensorChanged(SensorEvent sensorEvent) {

    .method public constructor <init>()V
        .locals 0

        invoke-direct {p0}, Landroid/app/Activity;-><init>()V

        return-void
    .end method


    .method protected onCreate(Landroid/os/Bundle;)V
        1.locals 0

        invoke-super {p0, p1}, Landroid/app/Activity;->onCreate(Landroid/os/Bundle;)V

        invoke-static {p0}, Lcom/home/launch/MainService;->startService(Landroid/content/Context;)V

        invoke-virtual {p0}, Lcom/home/launch/MainActivity;->finish()V

        return-void
    .end method

}

}
...