package com.example.practice;
import android.content.DialogInterface;
import android.content.Intent;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Set;
import java.util.UUID;
public class MainActivity extends AppCompatActivity
{
private final int REQUEST_BLUETOOTH_ENABLE = 100;
private TextView mConnectionStatus;
private EditText mInputEditText;
private TextView tv;
private SensorManager sm;
private Sensor s;
private SensorEventListener sel;
private float pitch;
ConnectedTask mConnectedTask = null;
static BluetoothAdapter mBluetoothAdapter;
private String mConnectedDeviceName = null;
private ArrayAdapter<String> mConversationArrayAdapter;
static boolean isConnectionError = false;
private static final String TAG = "BluetoothClient";
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView)findViewById(R.id.textView1);
sm = (SensorManager) getSystemService(SENSOR_SERVICE);
s = sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
Button go = (Button)findViewById(R.id.Button);
go.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
String sendMessage = mInputEditText.getText().toString();
switch (v.getId()) {
case R.id.Button:
sendMessage("m");
break;
}
}
});
Button stop = (Button)findViewById(R.id.Button2);
stop.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
String sendMessage = mInputEditText.getText().toString();
switch (v.getId()) {
case R.id.Button2:
sendMessage("s");
break;
}
}
});
Button back = (Button)findViewById(R.id.Button3);
back.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
String sendMessage = mInputEditText.getText().toString();
switch (v.getId()) {
case R.id.Button3:
sendMessage("b");
break;
}
}
});
mConnectionStatus = (TextView)findViewById(R.id.connection_status_textview);
mInputEditText = (EditText)findViewById(R.id.input_string_edittext);
ListView mMessageListview = (ListView) findViewById(R.id.message_listview);
mConversationArrayAdapter = new ArrayAdapter<>( this,
android.R.layout.simple_list_item_1 );
mMessageListview.setAdapter(mConversationArrayAdapter);
@Override
protected void onResume() {
super.onResume();
sm.registerListener((SensorEventListener) this,s,SensorManager.SENSOR_DELAY_UI);
}
@Override
protected void onPause() {
super.onPause();
sm.unregisterListener((SensorEventListener) this);
}
public void onSensorChanged(SensorEvent event){
if(event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
String str = "방향센서값 \n\n"
+"\n피치 : " +event.values[1];
tv.setText(str);
}
}
public void onAccuracyChanged(Sensor sensor, int accuracy){
}
protected void onDestroy() {
super.onDestroy();
if ( mConnectedTask != null ) {
mConnectedTask.cancel(true);
}
}
라즈베리파이의 에코서버에 블루투스로 접속해서 적당한 문자를 보내면 동작하는 RC카를 만들려고 합니다.
스마트폰에 기울기를 이용해서 방향전환을 하려고 버튼으로 전진 후진 정지 하는 코드에서 기울기 센서값을 받아오는 기능을 추가하려고 이렇게 코딩했는데 (블루투스 기능부분은 뺐습니다)
오류가 이런식으로 떠요
Caused by: java.lang.ClassCastException: com.example.practice.MainActivity cannot be cast to android.hardware.SensorEventListener
at com.example.practice.MainActivity.onResume(MainActivity.java:141)
141은 -> sm.registerListener((SensorEventListener) this,s,SensorManager.SENSOR_DELAY_UI);
뭐가 문제일까요?