100d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon/* 200d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon * Copyright (C) 2013 The Android Open Source Project 300d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon * 400d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon * Licensed under the Apache License, Version 2.0 (the "License"); 500d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon * you may not use this file except in compliance with the License. 600d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon * You may obtain a copy of the License at 700d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon * 800d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon * http://www.apache.org/licenses/LICENSE-2.0 900d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon * 1000d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon * Unless required by applicable law or agreed to in writing, software 1100d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon * distributed under the License is distributed on an "AS IS" BASIS, 1200d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1300d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon * See the License for the specific language governing permissions and 1400d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon * limitations under the License. 1500d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon */ 1600d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon 1700d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordonpackage com.android.phone; 1800d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon 19cd76f8b160e0e4b2e5ccf34c0c5e1e58a0bb8b72Santos Cordonimport android.app.PendingIntent; 2000d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordonimport android.app.Service; 2100d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordonimport android.content.Intent; 2200d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordonimport android.os.IBinder; 2300d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordonimport android.util.Log; 2400d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon 2500d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon/** 2600d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon * Service for performing HfaActivation without any UI. 2700d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon */ 2800d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordonpublic class HfaService extends Service { 2900d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon private static final String TAG = HfaService.class.getSimpleName(); 3000d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon 31fea89c31ed08c16f230b8d2b6f5ae3b14c032567Wink Saville private HfaLogic mHfaLogic; 32fea89c31ed08c16f230b8d2b6f5ae3b14c032567Wink Saville 3300d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon @Override 3400d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon public void onCreate() { 35cd76f8b160e0e4b2e5ccf34c0c5e1e58a0bb8b72Santos Cordon Log.i(TAG, "service started"); 36cd76f8b160e0e4b2e5ccf34c0c5e1e58a0bb8b72Santos Cordon } 37cd76f8b160e0e4b2e5ccf34c0c5e1e58a0bb8b72Santos Cordon 38cd76f8b160e0e4b2e5ccf34c0c5e1e58a0bb8b72Santos Cordon @Override 39cd76f8b160e0e4b2e5ccf34c0c5e1e58a0bb8b72Santos Cordon public int onStartCommand(Intent intent, int flags, int startId) { 40cd76f8b160e0e4b2e5ccf34c0c5e1e58a0bb8b72Santos Cordon final PendingIntent otaResponseIntent = intent.getParcelableExtra( 41cd76f8b160e0e4b2e5ccf34c0c5e1e58a0bb8b72Santos Cordon OtaUtils.EXTRA_OTASP_RESULT_CODE_PENDING_INTENT); 42cd76f8b160e0e4b2e5ccf34c0c5e1e58a0bb8b72Santos Cordon 43fea89c31ed08c16f230b8d2b6f5ae3b14c032567Wink Saville mHfaLogic = new HfaLogic(this, new HfaLogic.HfaLogicCallback() { 4400d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon @Override 4500d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon public void onSuccess() { 4600d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon Log.i(TAG, "onSuccess"); 4700d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon onComplete(); 4800d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon } 4900d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon 5000d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon @Override 5100d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon public void onError(String msg) { 5200d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon Log.i(TAG, "onError: " + msg); 5300d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon // We do not respond from this service. On success or failure 5400d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon // we do the same thing...finish. 5500d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon onComplete(); 5600d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon } 57fea89c31ed08c16f230b8d2b6f5ae3b14c032567Wink Saville }, otaResponseIntent); 58fea89c31ed08c16f230b8d2b6f5ae3b14c032567Wink Saville mHfaLogic.start(); 5900d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon 600a71a2acc39669fb5ec79a47db0828bc4474c8ecEvan Charlton return START_REDELIVER_INTENT; 6100d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon } 6200d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon 6300d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon @Override 6400d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon public IBinder onBind(Intent intent) { 6500d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon return null; 6600d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon } 6700d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon 6800d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon private void onComplete() { 6900d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon stopSelf(); 7000d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon } 7100d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon} 72