Android activity 如何使用Android Studio发送消息

Android activity 如何使用Android Studio发送消息,android-activity,sms,Android Activity,Sms,我想在加速计跟踪到有人用手机摔倒时发送一条消息。我尝试过一些东西,但当我在手机上运行它时,它“不幸地停止”,就像一个应用程序在出现错误时通常所做的那样。 我只有一个活动: MainActivity.java: package com.mycompany.accelerometer; import android.app.Activity; import android.hardware.Sensor; import android.hardware.SensorEvent; import an

我想在加速计跟踪到有人用手机摔倒时发送一条消息。我尝试过一些东西,但当我在手机上运行它时,它“不幸地停止”,就像一个应用程序在出现错误时通常所做的那样。 我只有一个活动: MainActivity.java:

package com.mycompany.accelerometer;

import android.app.Activity;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener; 
import android.hardware.SensorManager;
import android.media.MediaPlayer;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle; 
import android.telephony.gsm.SmsManager;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity implements SensorEventListener{

MediaPlayer dangerSound ;

private Sensor mySensor ;
private SensorManager SM ;
public TextView PhoneNumber ;
public String TextMessage ;
public String numText ;
public SmsManager manager ;

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

    manager = SmsManager.getDefault();


    SM = (SensorManager)getSystemService(SENSOR_SERVICE);

    mySensor = SM.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);

    SM.registerListener(this , mySensor , SensorManager.SENSOR_DELAY_NORMAL);

    dangerSound = MediaPlayer.create(this , R.raw.warning_sound);

    PhoneNumber = (TextView) findViewById(R.id.PhoneNumber);
    numText = PhoneNumber.getText().toString();

    TextMessage = "Help me, I have fallen !!!";

}

@Override
public void onSensorChanged(SensorEvent event) {
    double x = event.values[0];
    double y = event.values[1];
    double z = event.values[2];
    double vector = Math.sqrt(x*x + y*y + z*z);
    if(vector >= 20){
        dangerSound.start();
        manager.sendTextMessage(numText , null , TextMessage , null , null);
    }

}

@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
    // Not using`enter code here`
}
}
我的日志

12-01 22:33:42.239 15762-15762/? E/Zygote: MountEmulatedStorage()
12-01 22:33:42.239 15762-15762/? I/libpersona: KNOX_SDCARD checking this for  10231
12-01 22:33:42.239 15762-15762/? E/Zygote: v2
12-01 22:33:42.239 15762-15762/? I/libpersona: KNOX_SDCARD not a persona
12-01 22:33:42.239 15762-15762/? I/SELinux: Function: selinux_compare_spd_ram, SPD-policy is existed. and_ver=SEPF_SM-E700H_4.4.4 ver=A046
12-01 22:33:42.239 15762-15762/? I/SELinux: Function: selinux_compare_spd_ram , priority [2] , priority version is VE=SEPF_SM-E700H_5.1.1_0039
12-01 22:33:42.239 15762-15762/? E/SELinux: [DEBUG] get_category: variable seinfo: default sensitivity: NULL, cateogry: NULL
12-01 22:33:42.249 15762-15762/? I/art: Late-enabling -Xcheck:jni
12-01 22:33:42.289 15762-15762/? D/TimaKeyStoreProvider: TimaSignature is unavailable
12-01 22:33:42.289 15762-15762/? D/ActivityThread: Added TimaKeyStore provider
12-01 22:33:42.359 15762-15762/com.mycompany.accelerometer D/SecWifiDisplayUtil: Metadata value : none
12-01 22:33:42.389 15762-15762/com.mycompany.accelerometer D/PhoneWindow: *FMB* installDecor mIsFloating : false
12-01 22:33:42.389 15762-15762/com.mycompany.accelerometer D/PhoneWindow: *FMB* installDecor flags : -2139029248
12-01 22:33:42.409 15762-15762/com.mycompany.accelerometer D/SensorManager: registerListener :: 0, K2HH Acceleration , 200000, 0,  
12-01 22:33:42.419 15762-15762/com.mycompany.accelerometer V/MediaPlayer-JNI: native_setup
12-01 22:33:42.419 15762-15762/com.mycompany.accelerometer V/MediaPlayer: constructor
12-01 22:33:42.419 15762-15762/com.mycompany.accelerometer V/MediaPlayer: setListener
12-01 22:33:42.419 15762-15762/com.mycompany.accelerometer E/MediaPlayer-JNI: QCMediaPlayer mediaplayer NOT present
12-01 22:33:42.419 15762-15762/com.mycompany.accelerometer V/MediaPlayer-      JNI: setParameter: key 1400
12-01 22:33:42.419 15762-15762/com.mycompany.accelerometer V/MediaPlayer: MediaPlayer::setParameter(1400)
12-01 22:33:42.419 15762-15762/com.mycompany.accelerometer V/MediaPlayer-JNI: setAudioStreamType: 3
12-01 22:33:42.419 15762-15762/com.mycompany.accelerometer V/MediaPlayer: MediaPlayer::setAudioStreamType
12-01 22:33:42.419 15762-15762/com.mycompany.accelerometer V/MediaPlayer-JNI: set_session_id(): 44
12-01 22:33:42.419 15762-15762/com.mycompany.accelerometer V/MediaPlayer: MediaPlayer::setAudioSessionId(44)
12-01 22:33:42.419 15762-15762/com.mycompany.accelerometer V/MediaPlayer-JNI: setDataSourceFD: fd 28
12-01 22:33:42.419 15762-15762/com.mycompany.accelerometer V/MediaPlayer: setDataSource(28, 213976, 6161372)
12-01 22:33:42.429 15762-15774/com.mycompany.accelerometer V/MediaPlayer: message received msg=8, ext1=0, ext2=0
12-01 22:33:42.429 15762-15774/com.mycompany.accelerometer V/MediaPlayer: notify(8, 0, 0) callback on disconnected mediaplayer
12-01 22:33:42.449 15762-15762/com.mycompany.accelerometer V/MediaPlayer: setVideoSurfaceTexture
12-01 22:33:42.449 15762-15762/com.mycompany.accelerometer V/MediaPlayer: prepare
12-01 22:33:42.449 15762-15771/com.mycompany.accelerometer V/MediaPlayer: message received msg=200, ext1=973, ext2=0
12-01 22:33:42.449 15762-15771/com.mycompany.accelerometer W/MediaPlayer: info/warning (973, 0)
12-01 22:33:42.459 15762-15771/com.mycompany.accelerometer V/MediaPlayer: callback application
12-01 22:33:42.459 15762-15771/com.mycompany.accelerometer V/MediaPlayer: back from callback
12-01 22:33:42.459 15762-15771/com.mycompany.accelerometer V/MediaPlayer: message received msg=5, ext1=0, ext2=0
12-01 22:33:42.459 15762-15771/com.mycompany.accelerometer V/MediaPlayer: New video size 0 x 0
12-01 22:33:42.459 15762-15771/com.mycompany.accelerometer V/MediaPlayer: callback application
12-01 22:33:42.459 15762-15771/com.mycompany.accelerometer V/MediaPlayer: back from callback
12-01 22:33:42.459 15762-15771/com.mycompany.accelerometer V/MediaPlayer: message received msg=1, ext1=0, ext2=0
12-01 22:33:42.459 15762-15771/com.mycompany.accelerometer V/MediaPlayer: prepared
12-01 22:33:42.459 15762-15771/com.mycompany.accelerometer V/MediaPlayer: signal application thread
12-01 22:33:42.459 15762-15771/com.mycompany.accelerometer V/MediaPlayer: callback application
12-01 22:33:42.459 15762-15771/com.mycompany.accelerometer V/MediaPlayer: back from callback
12-01 22:33:42.459 15762-15762/com.mycompany.accelerometer V/MediaPlayer: prepare complete - status=0
12-01 22:33:42.459 15762-15762/com.mycompany.accelerometer E/MediaPlayer: Should have subtitle controller already set
12-01 22:33:42.509 15762-15762/com.mycompany.accelerometer D/ViewRootImpl: Buffer Count from app info with  ::-1 && -1 for :: com.mycompany.accelerometer from View :: -1 DBQ Enabled ::false false
12-01 22:33:42.509 15762-15793/com.mycompany.accelerometer D/OpenGLRenderer: Use EGL_SWAP_BEHAVIOR_PRESERVED: true
12-01 22:33:42.509 15762-15762/com.mycompany.accelerometer I/MediaPlayer: Don't send intent. msg.arg1 = 0, msg.arg2 = 0
12-01 22:33:42.509 15762-15762/com.mycompany.accelerometer E/MediaPlayer: Should have subtitle controller already set
12-01 22:33:42.519 15762-15762/com.mycompany.accelerometer D/PhoneWindow: *FMB* isFloatingMenuEnabled mFloatingMenuBtn : null
12-01 22:33:42.519 15762-15762/com.mycompany.accelerometer D/PhoneWindow: *FMB* isFloatingMenuEnabled return false
12-01 22:33:42.539 15762-15793/com.mycompany.accelerometer I/Adreno-EGL: <qeglDrvAPI_eglInitialize:379>: EGL 1.4 QUALCOMM build:  (I716aebe4f9)
12-01 22:33:42.539 15762-15793/com.mycompany.accelerometer I/Adreno-EGL: OpenGL ES Shader Compiler Version: E031.25.03.04
12-01 22:33:42.539 15762-15793/com.mycompany.accelerometer I/Adreno-EGL:    Build Date: 07/01/15 수
12-01 22:33:42.539 15762-15793/com.mycompany.accelerometer I/Adreno-EGL: Local Branch:  AU_LINUX_ANDROID_LA.BR.1.1.3_RB1.05.01.00.032.031_02060873_02063264
12-01 22:33:42.539 15762-15793/com.mycompany.accelerometer I/Adreno-EGL: Remote Branch: 
12-01 22:33:42.539 15762-15793/com.mycompany.accelerometer I/Adreno-EGL: Local Patches: 
12-01 22:33:42.539 15762-15793/com.mycompany.accelerometer I/Adreno-EGL: Reconstruct Branch: 
12-01 22:33:42.539 15762-15793/com.mycompany.accelerometer I/OpenGLRenderer: Initialized EGL, version 1.4
12-01 22:33:42.559 15762-15793/com.mycompany.accelerometer D/OpenGLRenderer: Get maximum texture size. GL_MAX_TEXTURE_SIZE is 4096
12-01 22:33:42.559 15762-15793/com.mycompany.accelerometer D/OpenGLRenderer: Enabling debug mode 0
12-01 22:33:42.629 15762-15762/com.mycompany.accelerometer I/Timeline: Timeline: Activity_idle id: android.os.BinderProxy@ca442fd time:887051
12-01 22:33:42.239 15762-15762/?E/合子:mountSimulatedStorage()
12-01 22:33:42.239 15762-15762/? I/libpersona:KNOX_SDCARD检查10231
12-01 22:33:42.239 15762-15762/? E/合子:v2
12-01 22:33:42.239 15762-15762/? I/libpersona:KNOX_SDCARD不是人物角色
12-01 22:33:42.239 15762-15762/? I/SELinux:功能:SELinux\u比较\u spd\u ram,存在spd策略。和_ver=SEPF_SM-E700H_4.4.4 ver=A046
12-01 22:33:42.239 15762-15762/? I/SELinux:功能:SELinux\u比较\u spd\u ram,优先级[2],优先级版本为VE=SEPF\u SM-E700H\u 5.1.1\u 0039
12-01 22:33:42.239 15762-15762/? E/SELinux:[调试]获取类别:变量seinfo:默认灵敏度:NULL,类别:NULL
12-01 22:33:42.249 15762-15762/? I/art:Late-enabling-Xcheck:jni
12-01 22:33:42.289 15762-15762/? D/TimaKeyStoreProvider:Timasignation不可用
12-01 22:33:42.289 15762-15762/? D/ActivityThread:添加了TimaKeyStore提供程序
12-01 22:33:42.359 15762-15762/com.mycompany.D/SecWifiDisplayUtil:元数据值:无
12-01 22:33:42.389 15762-15762/com.mycompany.D/PhoneWindow:*FMB*installDecor误浮:假
12-01 22:33:42.389 15762-15762/com.mycompany.D/PhoneWindow:*FMB*installDecor标志:-2139029248
12-01 22:33:42.409 15762-15762/com.mycompany.Accelerator D/SensorManager:寄存器列表器::0,K2HH加速度,200000,0,
12-01 22:33:42.419 15762-15762/com.mycompany.Accelerator V/MediaPlayer JNI:本机设置
12-01 22:33:42.419 15762-15762/com.mycompany.V/MediaPlayer:constructor
12-01 22:33:42.419 15762-15762/com.mycompany.accelerator V/MediaPlayer:setListener
12-01 22:33:42.419 15762-15762/com.mycompany.E/MediaPlayer JNI:QCMediaPlayer不存在
12-01 22:33:42.419 15762-15762/com.mycompany.accelerator V/MediaPlayer-JNI:setParameter:key 1400
12-01 22:33:42.419 15762-15762/com.mycompany.accelerator V/MediaPlayer:MediaPlayer::setParameter(1400)
12-01 22:33:42.419 15762-15762/com.mycompany.Accelerator V/MediaPlayer JNI:setAudioStreamType:3
12-01 22:33:42.419 15762-15762/com.mycompany.V/MediaPlayer:MediaPlayer::setAudioStreamType
12-01 22:33:42.419 15762-15762/com.mycompany.Accelerator V/MediaPlayer JNI:set_session_id():44
12-01 22:33:42.419 15762-15762/com.mycompany.V/MediaPlayer:MediaPlayer::setAudioSessionId(44)
12-01 22:33:42.419 15762-15762/com.mycompany.Accelerator V/MediaPlayer JNI:setDataSourceFD:fd 28
12-01 22:33:42.419 15762-15762/com.mycompany.Accelerator V/MediaPlayer:setDataSource(28213976161372)
12-01 22:33:42.429 15762-15774/com.mycompany.accelerator V/MediaPlayer:message received msg=8,ext1=0,ext2=0
12-01 22:33:42.429 15762-15774/com.mycompany.V/MediaPlayer:notify(8,0,0)回调已断开的MediaPlayer
12-01 22:33:42.449 15762-15762/com.mycompany.Accelerator V/MediaPlayer:setVideoSurfaceTexture
12-01 22:33:42.449 15762-15762/com.mycompany.V/MediaPlayer:prepare
12-01 22:33:42.449 15762-15771/com.mycompany.accelerator V/MediaPlayer:message received msg=200,ext1=973,ext2=0
12-01 22:33:42.449 15762-15771/com.mycompany.accelerator W/MediaPlayer:info/warning(973,0)
12-01 22:33:42.459 15762-15771/com.mycompany.V/MediaPlayer:回调应用程序
12-01 22:33:42.459 15762-15771/com.mycompany.V/MediaPlayer:back from callback
12-01 22:33:42.459 15762-15771/com.mycompany.accelerator V/MediaPlayer:message received msg=5,ext1=0,ext2=0
12-01 22:33:42.459 15762-15771/com.mycompany.Accelerator V/MediaPlayer:新视频大小为0 x 0
12-01 22:33:42.459 15762-15771/com.mycompany.V/MediaPlayer:回调应用程序
12-01 22:33:42.459 15762-15771/com.mycompany.V/MediaPlayer:back from callback
12-01 22:33:42.459 15762-15771/com.mycompany.accelerator V/MediaPlayer:message received msg=1,ext1=0,ext2=0
12-01 22:33:42.459 15762-15771/com.mycompany.Accelerator V/MediaPlayer:已准备好
12-01 22:33:42.459 15762-15771/com.mycompany.Accelerator V/MediaPlayer:信号应用程序线程
12-01 22:33:42.459 15762-15771/com.mycompany.V/MediaPlayer:回调应用程序
12-01 22:33:42.459 15762-15771/com.mycompany.V/MediaPlayer:back from callback
12-01 22:33:42.459 15762-15762/com.mycompany.Accelerator V/MediaPlayer:准备完成-状态=0
12-01 22:33:42.459 15762-15762/com.mycompany.E/MediaPlayer:应已设置字幕控制器
12-01 22:33:42.509 15762-15762/com.mycompany.Accelerator D/ViewRootImpl:应用程序信息中的缓冲区计数,其中::-1&&1用于::com.mycompany.Accelerator从视图中::-1 DBQ已启用::false
12-01 22:33:42.509 15762-15793/com.mycompany.accelerator D/OpenGLRenderer:使用EGL交换行为保存:true
12-01 22:33:42.509 15762-15762/com.mycompany.I/MediaPlayer:不要发送意图。msg.arg1=0,msg.arg2=0
12-01 22:33:42.509 15762-15762/com.mycompany.E/MediaPlayer:应已设置字幕控制器
12-01 22:33:42.519 15762-15762/com.mycompany.D/PhoneWindow:*FMB*isFloatingMenuEnabled mFloatingMenuBtn:null
12-01 22:33:42.519 15762-15762/com.mycompany.D/PhoneWindow:*FMB*isFloatingMenuEnabled返回false
12-01 22:33:42.539 15762-15793/com.mycompany.accelerator I/Adreno EGL::EGL 1.4高通公司构建:(I716aebe4f9)
12-01 22:33:42.539 15762-15793/com.mycompany.Accelerator I/Adreno EGL:OpenGL ES着色器编译器版本:E031.25.03.04
12-01 22:33:42.539 15762-15793/com.mycompany.I/Adreno EGL:制造日期:2015年7月1日수
12-01 22:33:42.539 15762-1579
 protected void sendSMS(Location location, boolean last) {
Geocoder geocoder = new Geocoder(mContext);
String addressText = "";

try {
    List<Address> addresses = geocoder.getFromLocation(
            location.getLatitude(), location.getLongitude(), 1);

    if (addresses.size() > 0) {
        Address a = addresses.get(0);
        addressText = "Address: ";
        for (int i = 0; i <= a.getMaxAddressLineIndex(); i++) {
            addressText += a.getAddressLine(i) + " ";
        }
    }
} catch (Exception e) {
    // unable to geocode
    addressText = "";
}

String locationString;
if (location != null && !last) {
    locationString = " New location: " + location.getLatitude()
            + ", " + location.getLongitude() + " ";
} else if (last) {
    locationString = " Last known location: "
            + location.getLatitude() + ", "
            + location.getLongitude() + " ";
} else {
    locationString = "Waiting for location";
}

SharedPreferences phoneNumbers = mContext.getSharedPreferences(
        PREF_PHONE_NUMBERS, 0);
String currPhoneNumber;

for (int i = 0; !((currPhoneNumber = phoneNumbers.getString(
        Integer.toString(i), "")).equals("")); i++) {
    try {
        SmsManager smsManager = SmsManager.getDefault();
        smsManager.sendMultipartTextMessage(
                currPhoneNumber,
                null,
                smsManager.divideMessage(message + locationString
                        + addressText), null, null);
    } catch (Exception e) {
        e.printStackTrace();
    }
}}