Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ShakeService.java通过intent调用日志消息后未打印日志消息_Java_Android - Fatal编程技术网

ShakeService.java通过intent调用日志消息后未打印日志消息

ShakeService.java通过intent调用日志消息后未打印日志消息,java,android,Java,Android,我试图在打开开关时通过intent调用ShackService.java,该开关检测移动设备的加速度,当移动设备抖动并显示Toast消息时,它将显示Toast消息,但它不工作,那么我的代码中存在什么问题 我已经尝试更改调用intent部分的位置,并在代码的该部分中获取日志消息,该部分工作正常,但调用intent后在ShackService.java中未获取日志消息 MainActivity.java package com.example.android.safetyapp; import a

我试图在打开开关时通过intent调用ShackService.java,该开关检测移动设备的加速度,当移动设备抖动并显示Toast消息时,它将显示Toast消息,但它不工作,那么我的代码中存在什么问题

我已经尝试更改调用intent部分的位置,并在代码的该部分中获取日志消息,该部分工作正常,但调用intent后在ShackService.java中未获取日志消息

MainActivity.java

package com.example.android.safetyapp;

import android.content.Context;
import android.content.Intent;
import android.hardware.Sensor;
import android.hardware.SensorManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.Switch;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    private Switch OnOffSwitch;
    private Boolean SwitchState;

    private EditText messagebox;

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

        messagebox = (EditText) findViewById(R.id.messagebox);

        OnOffSwitch = (Switch) findViewById(R.id.OnAndOffSwitch);       
//Initialize switch
        SwitchState = OnOffSwitch.isChecked();                  //Current state of switch

        if (SwitchState == false) {                                      //to show initial text
            OnOffSwitch.setText("Service is Off");
        }

        OnOffSwitch.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                final String emergencymessage = messagebox.getText().toString().trim();
                if (emergencymessage.isEmpty()) {
                    OnOffSwitch.setChecked(false);
                    OnOffSwitch.setText("Service is Off");
                    Toast.makeText(MainActivity.this, "Message Box cannot leave empty", Toast.LENGTH_LONG).show();
                } else {
                    if (OnOffSwitch.isChecked()) {

                        //start shake detection
                        Intent intent = new Intent(MainActivity.this, ShakeService.class);
                        //Start Service
                        startService(intent);

                        OnOffSwitch.setText("Service is On");
                        Toast.makeText(MainActivity.this, "Service starts", Toast.LENGTH_SHORT).show();

                    } else {
                        OnOffSwitch.setText("Service is Off");
                        Toast.makeText(MainActivity.this, "Service stopped", Toast.LENGTH_SHORT).show();
                    }
                }
            }
        });
    }
}
ShakeService.java

package com.example.android.safetyapp;

import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Handler;
import android.os.IBinder;
import android.support.v4.app.NotificationCompat;
import android.util.Log;
import android.widget.Toast;

import java.util.Random;

public class ShakeService extends Service implements SensorEventListener {

    private static final String TAG = "myApp";

    private SensorManager mSensorManager;
    private Sensor mAccelerometer;
    private float mAccel; // acceleration apart from gravity
    private float mAccelCurrent; // current acceleration including gravity
    private float mAccelLast; // last acceleration including gravity

    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
        mAccelerometer = mSensorManager
            .getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
        mSensorManager.registerListener(this, mAccelerometer,
            SensorManager.SENSOR_DELAY_UI, new Handler());
        return START_STICKY;
    }

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

    @Override
    public void onSensorChanged(SensorEvent event) {
        float x = event.values[0];
        float y = event.values[1];
        float z = event.values[2];
        mAccelLast = mAccelCurrent;
        mAccelCurrent = (float) Math.sqrt((double) (x * x + y * y + z * z));
        float delta = mAccelCurrent - mAccelLast;
        mAccel = mAccel * 0.9f + delta;
        // perform low-cut filter
        if (mAccel > -1) {
            Log.v(TAG, "did something");
            Toast.makeText(ShakeService.this,"Shaking detected",Toast.LENGTH_SHORT).show();
            mAccel=0;
        }
    }
}

我希望在intent调用后打印日志消息“Dod something”,并在调用此intent时打印“Shacking detected”。

在清单中注册服务

在清单中注册服务