1 /* 2 * Copyright (C) 2012 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.cts.verifier.location; 18 19 import com.android.cts.verifier.PassFailButtons; 20 import com.android.cts.verifier.R; 21 22 import android.content.Context; 23 import android.graphics.Color; 24 import android.graphics.Typeface; 25 import android.location.LocationManager; 26 import android.os.Bundle; 27 import android.text.Layout; 28 import android.text.Spannable; 29 import android.text.style.ForegroundColorSpan; 30 import android.util.Log; 31 import android.view.View; 32 import android.widget.ScrollView; 33 import android.widget.TextView; 34 35 interface PassFailLog { log(String s)36 public void log(String s); pass()37 public void pass(); fail(String s)38 public void fail(String s); 39 } 40 41 /** 42 * CTS Verifier case for verifying GPS. 43 */ 44 public class GpsTestActivity extends PassFailButtons.Activity implements PassFailLog { 45 private LocationManager mLocationManager; 46 private TextView mTextView; 47 private ScrollView mScrollView; 48 49 LocationVerifier mLocationVerifier; 50 private int mTestNumber; 51 52 @Override onCreate(Bundle savedInstanceState)53 public void onCreate(Bundle savedInstanceState) { 54 super.onCreate(savedInstanceState); 55 56 mLocationManager = (LocationManager) getApplicationContext().getSystemService( 57 Context.LOCATION_SERVICE); 58 59 setContentView(R.layout.pass_fail_text); 60 setPassFailButtonClickListeners(); 61 setInfoResources(R.string.location_gps_test, R.string.location_gps_test_info, -1); 62 mTextView = (TextView) findViewById(R.id.text); 63 mTextView.setTypeface(Typeface.MONOSPACE); 64 mTextView.setTextSize(15.0f); 65 mScrollView = (ScrollView) findViewById(R.id.scroll); 66 } 67 68 @Override onResume()69 public void onResume() { 70 super.onResume(); 71 72 mTextView.setText(""); 73 getPassButton().setEnabled(false); 74 mTestNumber = 0; 75 nextTest(); 76 } 77 78 @Override onPause()79 public void onPause() { 80 super.onPause(); 81 82 if (mLocationVerifier != null) { 83 mLocationVerifier.stop(); 84 } 85 } 86 87 @Override getTestDetails()88 public String getTestDetails() { 89 return mTextView.getText().toString(); 90 } 91 nextTest()92 private void nextTest() { 93 mTestNumber++; 94 switch (mTestNumber) { 95 case 1: 96 // Test GPS with minTime = 0 97 mLocationVerifier = new LocationVerifier(this, mLocationManager, 98 LocationManager.GPS_PROVIDER, 0, 8, false); 99 mLocationVerifier.start(); 100 break; 101 case 2: 102 // Test GPS with minTime = 1s 103 mLocationVerifier = new LocationVerifier(this, mLocationManager, 104 LocationManager.GPS_PROVIDER, 1 * 1000, 8, false); 105 mLocationVerifier.start(); 106 break; 107 case 3: 108 // Test GPS with minTime = 5s 109 mLocationVerifier = new LocationVerifier(this, mLocationManager, 110 LocationManager.GPS_PROVIDER, 5 * 1000, 8, false); 111 mLocationVerifier.start(); 112 break; 113 case 4: 114 // Test GPS with minTime = 15s 115 mLocationVerifier = new LocationVerifier(this, mLocationManager, 116 LocationManager.GPS_PROVIDER, 15 * 1000, 8, false); 117 mLocationVerifier.start(); 118 break; 119 case 5: 120 log("All GPS tests complete", Color.GREEN); 121 getPassButton().setEnabled(true); 122 break; 123 } 124 } 125 126 @Override log(String s)127 public void log(String s) { 128 mTextView.append(s); 129 mTextView.append("\n"); 130 131 // Scroll to bottom 132 mScrollView.post(new Runnable() { 133 @Override 134 public void run() { 135 mScrollView.fullScroll(View.FOCUS_DOWN); 136 } 137 }); 138 } 139 log(String s, int color)140 private void log(String s, int color) { 141 int start = mTextView.getText().length(); 142 mTextView.append(s); 143 mTextView.append("\n"); 144 int end = mTextView.getText().length(); 145 Spannable spanText = (Spannable) mTextView.getText(); 146 spanText.setSpan(new ForegroundColorSpan(color), start, end, 0); 147 } 148 149 @Override fail(String s)150 public void fail(String s) { 151 log(s, Color.RED); 152 mLocationVerifier = null; 153 } 154 155 @Override pass()156 public void pass() { 157 log("OK!\n", Color.GREEN); 158 try { 159 Thread.sleep(2000); 160 log("(Sleep 2 second) \n", Color.GREEN); 161 } catch (InterruptedException e) { 162 fail("unexpected InterruptedException when sleep"); 163 } 164 mLocationVerifier = null; 165 nextTest(); 166 } 167 } 168