Autore Topic: shakelistener problemi con java  (Letto 889 volte)

Offline ramboluis

  • Nuovo arrivato
  • *
  • Post: 3
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    samsung galaxy s3
  • Sistema operativo:
    windows 7 64 bit
shakelistener problemi con java
« il: 24 Luglio 2014, 16:33:58 CEST »
0
sono nuovo in questo forum,
sto cerca di imparare a programmare su android.
conosco abbastanza bene il C e C#,mentre sono ignorantissimo  in java.
a scopo didattico ho cercato di fare una semplice torcia di quelle che non fanno altro che mettere un background bianco in modo da usare lo schermo per far luce.
volevo ora cercare di aggiungere a questa app altre funzioni, non per renderla piu utile ma soltanto per imparare ad usare nuovi "componenti" . ho cosi provato ad aggiungere una funzione con la quale si possa accendere la "torcia" scuotendo il cellulare , sfortunatamente non ci sono riuscito ricavando un sacco di errori che non capisco e vorrei capire
vi posto le class,manifet e log spero che qualcuno sia cosi gentile da spiegarmele

class home
Codice (Java): [Seleziona]
import android.content.Context;

import android.hardware.SensorManager;

/**
 * Created by Luca on 24/07/2014.
 */

public class home {
    ShakeListener MyShake = new ShakeListener(
            (SensorManager) getApplicationContext().getSystemService(
                    Context.SENSOR_SERVICE));

    MyShake.setForceThreshHold(1.9);
    MyShake.setOnShakeListener(new ShakeListener.OnShakeListener() {
        @Override
        public void onShake() {

            //azioni da fare
        }
    });
}

class ShakeListener

Codice (Java): [Seleziona]
import java.util.List;

import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;

public class ShakeListener implements SensorEventListener{

    private OnShakeListener mOnShakeListener = null;
    private SensorManager mSensorManager;
    private double mTotalForcePrev;
    private double mForceThreshHold = 1.5f;

    private List<Sensor> mSensors;
    private Sensor mAccelerationSensor;

    public ShakeListener(SensorManager sm){
        mSensorManager = sm;

        mSensors = mSensorManager.getSensorList(Sensor.TYPE_ACCELEROMETER);
        if(mSensors.size() > 0) {
            mAccelerationSensor = mSensors.get(0);
            mSensorManager.registerListener(this, mAccelerationSensor, SensorManager.SENSOR_DELAY_GAME);
        }

    }

    public void setForceThreshHold(double threshhold){
        mForceThreshHold = threshhold;
    }
    public double getForceThreshHold(){
        return mForceThreshHold;
    }

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

    public void onSensorChanged(SensorEvent event) {
        double totalForce = 0.0f;
        totalForce += Math.pow(event.values[0]/SensorManager.GRAVITY_EARTH, 2.0);
        totalForce += Math.pow(event.values[1]/SensorManager.GRAVITY_EARTH, 2.0);
        totalForce += Math.pow(event.values[2]/SensorManager.GRAVITY_EARTH, 2.0);
        totalForce = Math.sqrt(totalForce);

        if((totalForce < mForceThreshHold) && (mTotalForcePrev > mForceThreshHold)) {
            OnShake();
        }

        mTotalForcePrev = totalForce;
    }

    public void setOnShakeListener(OnShakeListener listener) {
        mOnShakeListener = listener;
    }

   private void OnShake(){
        if(mOnShakeListener!=null) {
            mOnShakeListener.onShake();
        }
    }

    public interface OnShakeListener {
        public abstract void onShake();
    }

}

ecco il manifest in cui non ho cambiato niente perche non ho capito come funziona

Codice (Java): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.applcompany.lucaseminara.shaketorch" >

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity

            android:name=".home"
            android:label="@string/app_name" >


            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>


infine il log
Codice: [Seleziona]
Executing tasks: [:app:assembleDebug]

Configuration on demand is an incubating feature.
Relying on packaging to define the extension of the main artifact has been deprecated and is scheduled to be removed in Gradle 2.0
:app:preBuild
:app:compileDebugNdk
:app:preDebugBuild
:app:checkDebugManifest
:app:preReleaseBuild
:app:prepareComAndroidSupportAppcompatV71910Library UP-TO-DATE
:app:prepareDebugDependencies
:app:compileDebugAidl UP-TO-DATE
:app:compileDebugRenderscript UP-TO-DATE
:app:generateDebugBuildConfig UP-TO-DATE
:app:generateDebugAssets UP-TO-DATE
:app:mergeDebugAssets UP-TO-DATE
:app:generateDebugResValues UP-TO-DATE
:app:generateDebugResources UP-TO-DATE
:app:mergeDebugResources UP-TO-DATE
:app:processDebugManifest
:app:processDebugResources UP-TO-DATE
:app:generateDebugSources UP-TO-DATE
:app:compileDebugJava
C:\Users\Luca\AndroidStudioProjects\ShakeTorch\app\src\main\java\home.java:13: error: <identifier> expected
    MyShake.setForceThreshHold(1.9);
                              ^
C:\Users\Luca\AndroidStudioProjects\ShakeTorch\app\src\main\java\home.java:13: error: illegal start of type
    MyShake.setForceThreshHold(1.9);
                               ^
C:\Users\Luca\AndroidStudioProjects\ShakeTorch\app\src\main\java\home.java:14: error: <identifier> expected
    MyShake.setOnShakeListener(new ShakeListener.OnShakeListener() {
                              ^
C:\Users\Luca\AndroidStudioProjects\ShakeTorch\app\src\main\java\home.java:14: error: illegal start of type
    MyShake.setOnShakeListener(new ShakeListener.OnShakeListener() {
                               ^
C:\Users\Luca\AndroidStudioProjects\ShakeTorch\app\src\main\java\home.java:14: error: ')' expected
    MyShake.setOnShakeListener(new ShakeListener.OnShakeListener() {
                                  ^
C:\Users\Luca\AndroidStudioProjects\ShakeTorch\app\src\main\java\home.java:14: error: ';' expected
    MyShake.setOnShakeListener(new ShakeListener.OnShakeListener() {
                                                ^
C:\Users\Luca\AndroidStudioProjects\ShakeTorch\app\src\main\java\home.java:14: error: invalid method declaration; return type required
    MyShake.setOnShakeListener(new ShakeListener.OnShakeListener() {
                                                 ^
C:\Users\Luca\AndroidStudioProjects\ShakeTorch\app\src\main\java\home.java:16: error: ';' expected
        public void onShake() {
                           ^
C:\Users\Luca\AndroidStudioProjects\ShakeTorch\app\src\main\java\home.java:20: error: illegal start of type
    });
     ^
9 errors

 FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:compileDebugJava'.
> Compilation failed; see the compiler error output for details.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 14.644 secs


grazie in anticipo

Offline tonno16

  • Utente storico
  • *****
  • Post: 1228
  • Respect: +59
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:shakelistener problemi con java
« Risposta #1 il: 05 Agosto 2014, 19:14:42 CEST »
0
Posta l' activity.

Cmq dovresti fare una normale activity. Metti un bottone.... E se cliccli il bottone devi avviare un service.
Nel service implementi lo shake

Offline tonno16

  • Utente storico
  • *****
  • Post: 1228
  • Respect: +59
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:shakelistener problemi con java
« Risposta #2 il: 11 Agosto 2014, 10:21:27 CEST »
0
Public classe home extends activity.....altrimenti non credo funzioni