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