1cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich/* 2cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich * Copyright (C) 2007 The Android Open Source Project 3cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich * 4cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich * Licensed under the Apache License, Version 2.0 (the "License"); 5cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich * you may not use this file except in compliance with the License. 6cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich * You may obtain a copy of the License at 7cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich * 8cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich * http://www.apache.org/licenses/LICENSE-2.0 9cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich * 10cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich * Unless required by applicable law or agreed to in writing, software 11cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich * distributed under the License is distributed on an "AS IS" BASIS, 12cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich * See the License for the specific language governing permissions and 14cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich * limitations under the License. 15cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich */ 16cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 17cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichpackage com.android.quake; 18cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 19cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichimport android.app.Activity; 20cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichimport android.os.Bundle; 21cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichimport android.util.Log; 22cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichimport android.view.WindowManager; 23cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 24cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichimport java.io.File; 25cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 26cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 27cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichpublic class QuakeActivity extends Activity { 28cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 29cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich QuakeView mQuakeView; 30cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 31cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich static QuakeLib mQuakeLib; 32cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 33cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich boolean mKeepScreenOn = true; 34cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 35cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich @Override protected void onCreate(Bundle icicle) { 36cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich Log.i("QuakeActivity", "onCreate"); 37cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich super.onCreate(icicle); 380fd2294f2b8fd5fb19a5918ffc79208c772d6d7aJack Palevich if (USE_DOWNLOADER) { 390fd2294f2b8fd5fb19a5918ffc79208c772d6d7aJack Palevich if (! DownloaderActivity.ensureDownloaded(this, 400fd2294f2b8fd5fb19a5918ffc79208c772d6d7aJack Palevich getString(R.string.quake_customDownloadText), FILE_CONFIG_URL, 4188f245b8c1cf67e8c06c8f2b42bbfb2e1bcec993Jack Palevich CONFIG_VERSION, SDCARD_DATA_PATH, USER_AGENT)) { 420fd2294f2b8fd5fb19a5918ffc79208c772d6d7aJack Palevich return; 430fd2294f2b8fd5fb19a5918ffc79208c772d6d7aJack Palevich } 44cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich } 45cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 46cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich if (foundQuakeData()) { 47cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 48cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich if (mQuakeLib == null) { 49cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich mQuakeLib = new QuakeLib(); 50cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich if(! mQuakeLib.init()) { 51cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich setContentView(new QuakeViewNoData( 52cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich getApplication(), 53cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich QuakeViewNoData.E_INITFAILED)); 54cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich return; 55cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich } 56cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich } 57cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 58cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich if (mKeepScreenOn) { 59cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich getWindow().setFlags( 60cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, 61cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 62cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich } 63cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 64cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich if (mQuakeView == null) { 65cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich mQuakeView = new 66cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich QuakeView(getApplication()); 67cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich mQuakeView.setQuakeLib(mQuakeLib); 68cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich } 69cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich setContentView(mQuakeView); 70cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich } 71cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich else { 72cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich setContentView(new QuakeViewNoData(getApplication(), 73cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich QuakeViewNoData.E_NODATA)); 74cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich } 75cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich } 76cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 77cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich @Override protected void onPause() { 78cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich super.onPause(); 79cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich if (mQuakeView != null) { 80cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich mQuakeView.onPause(); 81cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich } 82cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich } 83cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 84cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich @Override protected void onResume() { 85cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich super.onResume(); 86cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich if (mQuakeView != null) { 87cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich mQuakeView.onResume(); 88cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich } 89cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich } 90cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 91cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich @Override protected void onDestroy() { 92cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich super.onDestroy(); 93cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich if (mQuakeLib != null) { 94cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich mQuakeLib.quit(); 95cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich } 96cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich } 97cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 98cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich private boolean foundQuakeData() { 9988f245b8c1cf67e8c06c8f2b42bbfb2e1bcec993Jack Palevich return fileExists(SDCARD_DATA_PATH + PAK0_PATH) 10088f245b8c1cf67e8c06c8f2b42bbfb2e1bcec993Jack Palevich || fileExists(INTERNAL_DATA_PATH + PAK0_PATH); 101cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich } 102cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 103cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich private boolean fileExists(String s) { 104cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich File f = new File(s); 105cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich return f.exists(); 106cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich } 107cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 1080fd2294f2b8fd5fb19a5918ffc79208c772d6d7aJack Palevich private final static boolean USE_DOWNLOADER = false; 1090fd2294f2b8fd5fb19a5918ffc79208c772d6d7aJack Palevich 110cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich private final static String FILE_CONFIG_URL = 11188f245b8c1cf67e8c06c8f2b42bbfb2e1bcec993Jack Palevich "http://example.com/android/quake/quake11.config"; 112cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich private final static String CONFIG_VERSION = "1.1"; 11388f245b8c1cf67e8c06c8f2b42bbfb2e1bcec993Jack Palevich private final static String SDCARD_DATA_PATH = "/sdcard/data/quake"; 11488f245b8c1cf67e8c06c8f2b42bbfb2e1bcec993Jack Palevich private final static String INTERNAL_DATA_PATH = "/data/quake"; 11588f245b8c1cf67e8c06c8f2b42bbfb2e1bcec993Jack Palevich private final static String PAK0_PATH = "/id1/pak0.pak"; 116cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich private final static String USER_AGENT = "Android Quake Downloader"; 117cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 118cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich} 119