ZEO Programmierung

Techniken erklärt / Tipps & Tricks
KEINE reinen FRAGEN-THREADS!
Psychonaut
Beiträge: 9
Registriert seit: 9 Jahren 11 Monaten
Karma erhalten: 4 Mal

ZEO Programmierung

#1

Beitrag von Psychonaut »

Ich versuche zur Zeit eine App (Android) zu bauen, welche mir ein Signal gibt, wenn die REM Phase (ZEO Mobile) erreicht ist. Bin leider nicht sehr erfahren in Java. Ich hatte diese Frage bereits im Threat "Luciding" gestellt: Luciding und habe von Rapid eine Antwort bekommen. Dieser sagt: "Die aktuelle Schlafphase bekommst Du als Event gepusht". Ich habe also mein Glück erneut versucht, jedoch leider ohne Erfolg. Ich benutze folgende API: [External Link Removed for Guests] um den ZEO anzusteuern.
Ich hoffe ihr könnt mir weiterhelfen, da dies der letzte Schritt in meinem Projekt ist:)
Raipat
Beiträge: 201
Registriert seit: 11 Jahren 2 Monaten
Hat Karma vergeben: 16 Mal
Karma erhalten: 48 Mal

ZEO Programmierung

#2

Beitrag von Raipat »

wenn Du magst, guck ich gern mal über deinen Code...
DreamState
Administrator
Beiträge: 4700
Registriert seit: 13 Jahren 4 Monaten
Geschlecht: männlich
Avatar Status: Praktizierender Oneironaut!
KT-Anzahl: 196
Wohnort: Void
Hat Karma vergeben: 945 Mal
Karma erhalten: 1096 Mal
Kontaktdaten:

ZEO Programmierung

#3

Beitrag von DreamState »

Kenne mich da leider nicht aus, würde mich aber als Tester anbieten :) und gerne erstelle ich ein Logo, Grafiken für die App :)
Psychonaut
Beiträge: 9
Registriert seit: 9 Jahren 11 Monaten
Karma erhalten: 4 Mal

ZEO Programmierung

#4

Beitrag von Psychonaut »

sendToTacs() soll aufgerufen werden wenn die REM Phase erreicht ist. In meinem Quellcode habe ich nun in der Methode waitForRemEpisode() versucht, die REM Zeiten immer abzugleichen, wenn neue dazu kommt muss schließlich die REM Phase erreicht sein. Das ganze funktioniert nicht und scheint mir auch nach einer sehr hässlichen Lösung. Wie ich jetzt hier mit einem Event arbeiten soll weiß ich leider nicht :D oO
Spoiler
Show
package com.example.tacszeo;

import com.myzeo.android.api.data.ZeoDataContract;
import com.myzeo.android.api.data.ZeoDataContract.SleepEpisode;
import android.os.Bundle;
import android.app.Activity;
import android.content.ContentResolver;
import android.content.ContentUris;
import android.database.Cursor;
import android.database.MatrixCursor;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import static com.myzeo.android.api.data.ZeoDataContract.SleepRecord;

public class ZeoTacs extends Activity {

private static final String TAG = "ZeoTacs";
private Button sleepStage;
private TextView textView;
private Cursor cursor;
private String[] projection;
private ContentResolver resolver;
private int oldREM = 10000;


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

//Filter
projection = new String[] {SleepEpisode._ID};

//ContentResolver
resolver = getContentResolver();

// Daten abgreifen
cursor = resolver.query(SleepRecord.CONTENT_URI,
projection, null, null, null);

oldREM = cursor.getInt(0);

cursor.close();


textView = (TextView) findViewById(R.id.stage);

sleepStage = (Button) findViewById(R.id.sleepStage);

sleepStage.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {



}
});


waitForRemEpisode();

}

private void waitForRemEpisode(){

boolean listen = true;

while(listen){

// Schleife Pausieren
/*try {
Thread.sleep(60000);// 3 Minuten warten
} catch(InterruptedException ex) {
Thread.currentThread().interrupt();
}*/

//Cursor abgreifen
cursor = resolver.query(SleepRecord.CONTENT_URI,
projection, null, null, null);
cursor.moveToFirst();

//REM Zeit abgreifen
int newREM = cursor.getInt(0);

cursor.close();

//Checken ob neuer REM Schlaf dazu kommt
if(oldREM < newREM){

// REM Phase wird eingeleitet
listen = false;
sendToTacs();

}}


}

// Kommunikations mit Raspberry
private void sendToTacs(){

//Test
textView.setText("NOW!!!");

}

private void screen(String text){

textView.setText(text);

}



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

}
Komme ich bestimmt drauf zurück Dreamstate, danke schon mal! Ich hatte schon eine App im AppStore gefunden, welche aber Geld kostet ( 3 Euro, also viel zu viel !) und bei mir nicht funktioniert :(( [External Link Removed for Guests]

Vom Prinzip her tut die App aber genau was ich brauche!
Antworten