1aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk/*
2aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk * Copyright (C) 2008 The Android Open Source Project
3aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk *
4aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk * Licensed under the Apache License, Version 2.0 (the "License");
5aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk * you may not use this file except in compliance with the License.
6aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk * You may obtain a copy of the License at
7aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk *
8aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk *      http://www.apache.org/licenses/LICENSE-2.0
9aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk *
10aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk * Unless required by applicable law or agreed to in writing, software
11aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk * distributed under the License is distributed on an "AS IS" BASIS,
12aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk * See the License for the specific language governing permissions and
14aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk * limitations under the License.
15aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk */
16aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk
17aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchoukpackage com.android.modelviewer;
18aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk
19aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchoukimport android.renderscript.RSSurfaceView;
20aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchoukimport android.renderscript.RenderScript;
21aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk
22aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchoukimport android.app.Activity;
23aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchoukimport android.content.res.Configuration;
24dc165b3365ca3e8fd7c4eb11b1154646977a6d0aAlex Sakhartchoukimport android.content.Intent;
25aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchoukimport android.os.Bundle;
26aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchoukimport android.os.Handler;
27aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchoukimport android.os.Looper;
28aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchoukimport android.os.Message;
29aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchoukimport android.provider.Settings.System;
30aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchoukimport android.util.Log;
31aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchoukimport android.view.Menu;
32aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchoukimport android.view.MenuItem;
33aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchoukimport android.view.View;
34dc165b3365ca3e8fd7c4eb11b1154646977a6d0aAlex Sakhartchoukimport android.view.MenuInflater;
35aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchoukimport android.view.Window;
36aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchoukimport android.widget.Button;
37aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchoukimport android.widget.ListView;
38dc165b3365ca3e8fd7c4eb11b1154646977a6d0aAlex Sakhartchoukimport android.net.Uri;
39aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk
40aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchoukimport java.lang.Runtime;
41aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk
4232e09b5891da0174f161d99e2d3ebe67d6efa39cAlex Sakhartchoukpublic class SimpleModel extends Activity {
43aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk
4432e09b5891da0174f161d99e2d3ebe67d6efa39cAlex Sakhartchouk    private SimpleModelView mView;
45aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk
46aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk    @Override
47aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk    public void onCreate(Bundle icicle) {
48aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk        super.onCreate(icicle);
49aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk
50aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk        // Create our Preview view and set it as the content of our
51aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk        // Activity
5232e09b5891da0174f161d99e2d3ebe67d6efa39cAlex Sakhartchouk        mView = new SimpleModelView(this);
53aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk        setContentView(mView);
54aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk    }
55aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk
56aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk    @Override
57aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk    protected void onResume() {
58aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk        // Ideally a game should implement onResume() and onPause()
59aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk        // to take appropriate action when the activity looses focus
60aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk        super.onResume();
61bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams        mView.resume();
62aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk    }
63aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk
64aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk    @Override
65aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk    protected void onPause() {
66aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk        // Ideally a game should implement onResume() and onPause()
67aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk        // to take appropriate action when the activity looses focus
68aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk        super.onPause();
69bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams        mView.pause();
70aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk    }
71aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk
72dc165b3365ca3e8fd7c4eb11b1154646977a6d0aAlex Sakhartchouk    @Override
73dc165b3365ca3e8fd7c4eb11b1154646977a6d0aAlex Sakhartchouk    public boolean onCreateOptionsMenu(Menu menu) {
74dc165b3365ca3e8fd7c4eb11b1154646977a6d0aAlex Sakhartchouk        MenuInflater inflater = getMenuInflater();
75dc165b3365ca3e8fd7c4eb11b1154646977a6d0aAlex Sakhartchouk        inflater.inflate(R.menu.loader_menu, menu);
76dc165b3365ca3e8fd7c4eb11b1154646977a6d0aAlex Sakhartchouk        return true;
77dc165b3365ca3e8fd7c4eb11b1154646977a6d0aAlex Sakhartchouk    }
78dc165b3365ca3e8fd7c4eb11b1154646977a6d0aAlex Sakhartchouk
79dc165b3365ca3e8fd7c4eb11b1154646977a6d0aAlex Sakhartchouk    @Override
80dc165b3365ca3e8fd7c4eb11b1154646977a6d0aAlex Sakhartchouk    public boolean onOptionsItemSelected(MenuItem item) {
81dc165b3365ca3e8fd7c4eb11b1154646977a6d0aAlex Sakhartchouk        // Handle item selection
82dc165b3365ca3e8fd7c4eb11b1154646977a6d0aAlex Sakhartchouk        switch (item.getItemId()) {
83dc165b3365ca3e8fd7c4eb11b1154646977a6d0aAlex Sakhartchouk        case R.id.load_model:
84dc165b3365ca3e8fd7c4eb11b1154646977a6d0aAlex Sakhartchouk            loadModel();
85dc165b3365ca3e8fd7c4eb11b1154646977a6d0aAlex Sakhartchouk            return true;
86dc165b3365ca3e8fd7c4eb11b1154646977a6d0aAlex Sakhartchouk        case R.id.display_options:
87dc165b3365ca3e8fd7c4eb11b1154646977a6d0aAlex Sakhartchouk            return true;
8835ccf46533c76cdc7c2f6c0ce8f33b34b29bc5e6Mathias Agopian        case R.id.sensor:
8935ccf46533c76cdc7c2f6c0ce8f33b34b29bc5e6Mathias Agopian            mView.toggleSensor();
9035ccf46533c76cdc7c2f6c0ce8f33b34b29bc5e6Mathias Agopian            return true;
91dc165b3365ca3e8fd7c4eb11b1154646977a6d0aAlex Sakhartchouk        default:
92dc165b3365ca3e8fd7c4eb11b1154646977a6d0aAlex Sakhartchouk            return super.onOptionsItemSelected(item);
93dc165b3365ca3e8fd7c4eb11b1154646977a6d0aAlex Sakhartchouk        }
94dc165b3365ca3e8fd7c4eb11b1154646977a6d0aAlex Sakhartchouk    }
95dc165b3365ca3e8fd7c4eb11b1154646977a6d0aAlex Sakhartchouk
96dc165b3365ca3e8fd7c4eb11b1154646977a6d0aAlex Sakhartchouk    private static final int FIND_A3D_MODEL = 10;
97dc165b3365ca3e8fd7c4eb11b1154646977a6d0aAlex Sakhartchouk    public void onActivityResult(int requestCode, int resultCode, Intent data) {
98dc165b3365ca3e8fd7c4eb11b1154646977a6d0aAlex Sakhartchouk        if (resultCode == RESULT_OK) {
99dc165b3365ca3e8fd7c4eb11b1154646977a6d0aAlex Sakhartchouk            if (requestCode == FIND_A3D_MODEL) {
100dc165b3365ca3e8fd7c4eb11b1154646977a6d0aAlex Sakhartchouk                Uri selectedImageUri = data.getData();
101dc165b3365ca3e8fd7c4eb11b1154646977a6d0aAlex Sakhartchouk                Log.e("Selected Path: ", selectedImageUri.getPath());
102dc165b3365ca3e8fd7c4eb11b1154646977a6d0aAlex Sakhartchouk                mView.loadA3DFile(selectedImageUri.getPath());
103dc165b3365ca3e8fd7c4eb11b1154646977a6d0aAlex Sakhartchouk            }
104dc165b3365ca3e8fd7c4eb11b1154646977a6d0aAlex Sakhartchouk        }
105dc165b3365ca3e8fd7c4eb11b1154646977a6d0aAlex Sakhartchouk    }
106dc165b3365ca3e8fd7c4eb11b1154646977a6d0aAlex Sakhartchouk
107dc165b3365ca3e8fd7c4eb11b1154646977a6d0aAlex Sakhartchouk    public void loadModel() {
108dc165b3365ca3e8fd7c4eb11b1154646977a6d0aAlex Sakhartchouk        Intent intent = new Intent();
109dc165b3365ca3e8fd7c4eb11b1154646977a6d0aAlex Sakhartchouk        intent.setAction(Intent.ACTION_PICK);
110dc165b3365ca3e8fd7c4eb11b1154646977a6d0aAlex Sakhartchouk        intent.setClassName("com.android.modelviewer",
111dc165b3365ca3e8fd7c4eb11b1154646977a6d0aAlex Sakhartchouk                            "com.android.modelviewer.A3DSelector");
112dc165b3365ca3e8fd7c4eb11b1154646977a6d0aAlex Sakhartchouk        startActivityForResult(intent, FIND_A3D_MODEL);
113dc165b3365ca3e8fd7c4eb11b1154646977a6d0aAlex Sakhartchouk    }
114dc165b3365ca3e8fd7c4eb11b1154646977a6d0aAlex Sakhartchouk
115aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk}
116aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk
117