1572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams/* 2572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * Copyright (C) 2008 The Android Open Source Project 3572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * 4572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * Licensed under the Apache License, Version 2.0 (the "License"); 5572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * you may not use this file except in compliance with the License. 6572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * You may obtain a copy of the License at 7572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * 8572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * http://www.apache.org/licenses/LICENSE-2.0 9572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * 10572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * Unless required by applicable law or agreed to in writing, software 11572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * distributed under the License is distributed on an "AS IS" BASIS, 12572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * See the License for the specific language governing permissions and 14572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * limitations under the License. 15572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams */ 16572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 17572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samspackage com.example.android.rs.balls; 18572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 19572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.renderscript.RSSurfaceView; 20572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.renderscript.RenderScript; 21572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 22572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.app.Activity; 23572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.content.res.Configuration; 24572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.os.Bundle; 25572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.os.Handler; 26572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.os.Looper; 27572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.os.Message; 28572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.provider.Settings.System; 29572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.util.Log; 30572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.view.Menu; 31572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.view.MenuItem; 32572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.view.View; 33572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.view.Window; 34572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.widget.Button; 35572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.widget.ListView; 36572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 37572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.app.Activity; 38572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.content.Context; 39572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.os.Bundle; 40572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.view.View; 41572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.hardware.Sensor; 42572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.hardware.SensorEvent; 43572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.hardware.SensorEventListener; 44572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.hardware.SensorManager; 45572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 46572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samspublic class Balls extends Activity implements SensorEventListener { 47572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams //EventListener mListener = new EventListener(); 48572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 49572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private static final String LOG_TAG = "libRS_jni"; 50572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private static final boolean DEBUG = false; 51572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private static final boolean LOG_ENABLED = false; 52572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 53572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private BallsView mView; 54572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private SensorManager mSensorManager; 55572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 56572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams // get the current looper (from your Activity UI thread for instance 57572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 58572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 59572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams public void onSensorChanged(SensorEvent event) { 60572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams //android.util.Log.d("rs", "sensor: " + event.sensor + ", x: " + event.values[0] + ", y: " + event.values[1] + ", z: " + event.values[2]); 61572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams synchronized (this) { 62572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) { 63572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams if(mView != null) { 64572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mView.setAccel(event.values[0], event.values[1], event.values[2]); 65572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 66572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 67572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 68572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 69572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 70572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams public void onAccuracyChanged(Sensor sensor, int accuracy) { 71572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 72572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 73572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams @Override 74572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams public void onCreate(Bundle icicle) { 75572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams super.onCreate(icicle); 76572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 77572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); 78572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 79572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams // Create our Preview view and set it as the content of our 80572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams // Activity 81572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mView = new BallsView(this); 82572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams setContentView(mView); 83572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 84572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 85572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams @Override 86572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams protected void onResume() { 87572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mSensorManager.registerListener(this, 88572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), 89572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams SensorManager.SENSOR_DELAY_FASTEST); 90572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 91572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams // Ideally a game should implement onResume() and onPause() 92572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams // to take appropriate action when the activity looses focus 93572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams super.onResume(); 94572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mView.resume(); 95572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 96572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 97572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams @Override 98572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams protected void onPause() { 99572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams super.onPause(); 100572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mView.pause(); 101572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams onStop(); 102572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 103572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 104572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams @Override 105572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams protected void onStop() { 106572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mSensorManager.unregisterListener(this); 107572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams super.onStop(); 108572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 109572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 110572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams static void log(String message) { 111572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams if (LOG_ENABLED) { 112572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams Log.v(LOG_TAG, message); 113572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 114572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 115572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 116572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 117572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams} 118572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 119