17d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon/* 27d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * Copyright (C) 2011 The Android Open Source Project 37d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * 47d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * Licensed under the Apache License, Version 2.0 (the "License"); 57d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * you may not use this file except in compliance with the License. 67d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * You may obtain a copy of the License at 77d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * 87d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * http://www.apache.org/licenses/LICENSE-2.0 97d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * 107d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * Unless required by applicable law or agreed to in writing, software 117d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * distributed under the License is distributed on an "AS IS" BASIS, 127d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * See the License for the specific language governing permissions and 147d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * limitations under the License. 157d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon */ 167d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 177d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonpackage com.android.phone; 187d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 197d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon/** 207d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * App-wide constants and enums for the phone app. 217d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * 227d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * Any constants that need to be shared between two or more classes within 237d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * the com.android.phone package should be defined here. (Constants that 247d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * are private to only one class can go in that class's .java file.) 257d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon */ 267d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonpublic class Constants { 277d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 287d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon /** 297d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * Complete list of error / diagnostic indications we might possibly 307d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * need to present to the user. 317d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * 327d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * This enum is basically a high-level list of the kinds of failures 337d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * or "exceptional conditions" that can occur when making a phone 347d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * call. When an error occurs, the CallController stashes away one of 357d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * these codes in the InCallUiState.pendingCallStatusCode flag and 367d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * launches the InCallScreen; the InCallScreen will then display some 377d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * kind of message to the user (usually an error dialog) explaining 387d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * what happened. 397d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * 407d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * The enum values here cover all possible result status / error 417d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * conditions that can happen when attempting to place an outgoing 427d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * call (see CallController.placeCall() and placeCallInternal()), as 437d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * well as some other conditions (like CDMA_CALL_LOST and EXITED_ECM) 447d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * that don't technically result from the placeCall() sequence but 457d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * still need to be communicated to the user. 467d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon */ 477d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon public enum CallStatusCode { 487d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon /** 497d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * No error or exceptional condition occurred. 507d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * The InCallScreen does not need to display any kind of alert to the user. 517d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon */ 527d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon SUCCESS, 537d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 547d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon /** 557d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * Radio is explictly powered off, presumably because the 567d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * device is in airplane mode. 577d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon */ 587d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon POWER_OFF, 597d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 607d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon /** 617d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * Only emergency numbers are allowed, but we tried to dial 627d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * a non-emergency number. 637d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon */ 647d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon EMERGENCY_ONLY, 657d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 667d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon /** 677d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * No network connection. 687d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon */ 697d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon OUT_OF_SERVICE, 707d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 717d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon /** 727d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * The supplied CALL Intent didn't contain a valid phone number. 737d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon */ 747d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon NO_PHONE_NUMBER_SUPPLIED, 757d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 767d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon /** 777d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * Our initial phone number was actually an MMI sequence. 787d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon */ 797d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon DIALED_MMI, 807d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 817d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon /** 827d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * We couldn't successfully place the call due to an 837d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * unknown failure in the telephony layer. 847d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon */ 857d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon CALL_FAILED, 867d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 877d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon /** 887d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * We tried to call a voicemail: URI but the device has no 897d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * voicemail number configured. 907d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * 917d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * When InCallUiState.pendingCallStatusCode is set to this 927d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * value, the InCallScreen will bring up a UI explaining what 937d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * happened, and allowing the user to go into Settings to fix the 947d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * problem. 957d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon */ 967d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon VOICEMAIL_NUMBER_MISSING, 977d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 987d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon /** 997d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * This status indicates that InCallScreen should display the 1007d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * CDMA-specific "call lost" dialog. (If an outgoing call fails, 1017d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * and the CDMA "auto-retry" feature is enabled, *and* the retried 1027d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * call fails too, we display this specific dialog.) 1037d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * 1047d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * TODO: this is currently unused, since the "call lost" dialog 1057d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * needs to be triggered by a *disconnect* event, rather than when 1067d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * the InCallScreen first comes to the foreground. For now we use 1077d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * the needToShowCallLostDialog field for this (see below.) 1087d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon */ 1097d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon CDMA_CALL_LOST, 1107d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 1117d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon /** 1127d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * This status indicates that the call was placed successfully, 1137d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * but additionally, the InCallScreen needs to display the 1147d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * "Exiting ECM" dialog. 1157d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * 1167d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * (Details: "Emergency callback mode" is a CDMA-specific concept 1177d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * where the phone disallows data connections over the cell 1187d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * network for some period of time after you make an emergency 1197d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * call. If the phone is in ECM and you dial a non-emergency 1207d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * number, that automatically *cancels* ECM, but we additionally 1217d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * need to warn the user that ECM has been canceled (see bug 1227d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * 4207607.)) 1237d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon */ 1247d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon EXITED_ECM 1257d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 1267d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 1277d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon // 1287d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon // TODO: Move all the various EXTRA_* and intent action constants here too. 1297d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon // (Currently they're all over the place: InCallScreen, 1307d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon // OutgoingCallBroadcaster, OtaUtils, etc.) 1317d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon // 1327d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 1337d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon // Dtmf tone type setting value for CDMA phone 1347d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon public static final int DTMF_TONE_TYPE_NORMAL = 0; 1357d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon public static final int DTMF_TONE_TYPE_LONG = 1; 1367d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon} 137