Brokenpage 에서 센서 클래스를 사용해서 좌표값들을 인식하고 싶습니다. 헌데 Sensor관련 클래스를 확인할 수가 없네요 ;; 하루종일 찾아봐도 뭐가 문제인지 모르겠습니다. 차라리 에러가 뜨면 좋을텐데 그냥 실행하면 동작하지 않습니다.
Brokenpage.java
package com.example.eggfry;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageButton;
public class Brokenpage extends Activity implements OnClickListener{
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.brokenpage);
setContentView(new BrokenSensor(this)); // 이부분이 문제입니다.
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
ImageButton btn_fry =(ImageButton) findViewById(R.id.imageButton1);
btn_fry.setOnClickListener(this);
}
public void onClick(View v){
switch (v.getId()){
case R.id.imageButton1:
Intent frypage = new Intent(this, Frypage.class);
startActivity(frypage);
break;
case R.id.imageButton2:
//count_broken =count_broken+2;
break;
case R.id.imageButton3:
break;
}
}//end of onClick()
}//end of class
BrokenSensor.java
package com.example.eggfry;
import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.SurfaceHolder;
import android.view.View;
public class BrokenSensor extends View implements SensorEventListener {
//=====전역변수=====
SensorManager sensorManager;
int m_x =0;
int m_y =0;
String m_str , m_str1, m_str2 ="";
String m_width ="";
//=====변수 초기화. 생성자 =====
public BrokenSensor(Context context){
super(context);
sensorManager =(SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION),SensorManager.SENSOR_DELAY_GAME);
}
//=====view에 그리는 부분=====
@SuppressLint("DrawAllocation")
public void onDraw(Canvas canvas){
canvas.drawBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher), m_x, m_y,null);
//좌표값 표시
Paint p = new Paint();
p.setTextSize(20);
p.setColor(Color.BLACK);
canvas.drawText(m_str, 40, 180, p);
canvas.drawText(m_str1,40, 200, p);
canvas.drawText(m_str2, 40, 220, p);
canvas.drawText(m_width, 40, 240, p);
canvas.drawBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher), 0, 0,null);
canvas.drawBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher), 450, 0,null);
canvas.drawBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher), 0, 660,null);
canvas.drawBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher), 410, 620,null);
//left , top , right , bottom
p.setColor(Color.BLUE);
canvas.drawRect (new Rect(0,0,30,30),p);
p.setColor(Color.RED);
canvas.drawRect (new Rect(450,0,480,30),p);
p.setColor(Color.YELLOW);
canvas.drawRect (new Rect(450,660,480,690),p);
p.setColor(Color.GREEN);
canvas.drawRect (new Rect(0,660,30,690),p);
//480x690
}
public void onSensorChanged(SensorEvent event){
synchronized(this){
switch(event.sensor.getType()){
case Sensor.TYPE_ORIENTATION:
float Heading = event.values[0];
float Pitch = event.values[1];
float Roll = event.values[2];
//텍스트 부분
m_str = "Heading[z] : "+ Float.toString(Heading);
m_str1 = "Roll[y]"+ Float.toString(Roll);
m_str2 = "Pitch[x] :"+ Float.toString(Pitch);
DisplayMetrics metrics = this.getResources().getDisplayMetrics();
int width = metrics.widthPixels;
int height = metrics.heightPixels;
m_width= "width: "+ width + " Height:" +height;
//움직이기
m_x -=(int) Roll;//x좌표값
m_y -=(int) Pitch; //y좌표값
//화면밖고정
if(m_x<=0)
m_x=0;
if(m_y<=0)
m_y=0;
if(m_x>= 300)
m_x = 300;
if(m_y>= 390)
m_y = 400;
break;
}
}
invalidate();
}
public void onAccuracyChanged(Sensor arg0, int arg1){
}
//-------surfaceview abstract method
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height){
}
public void surfaceCreated(SurfaceHolder holder){
}
public void surfaceDestroyed(SurfaceHolder holder){
/*
boolean retry = true;
m_thread.setRunning(false);
while(retry){
try{
m_thread.join();
retry =false;
}catch (InterruptedException e){
}//try catch
*/
}//surfaceDestroyed()
}//end of class