13d670de5ce9180e0a75d0884832c4714cb56e1b5Jeff Hamilton/* 23d670de5ce9180e0a75d0884832c4714cb56e1b5Jeff Hamilton * Copyright (C) 2011 The Android Open Source Project 33d670de5ce9180e0a75d0884832c4714cb56e1b5Jeff Hamilton * 43d670de5ce9180e0a75d0884832c4714cb56e1b5Jeff Hamilton * Licensed under the Apache License, Version 2.0 (the "License"); 53d670de5ce9180e0a75d0884832c4714cb56e1b5Jeff Hamilton * you may not use this file except in compliance with the License. 63d670de5ce9180e0a75d0884832c4714cb56e1b5Jeff Hamilton * You may obtain a copy of the License at 73d670de5ce9180e0a75d0884832c4714cb56e1b5Jeff Hamilton * 83d670de5ce9180e0a75d0884832c4714cb56e1b5Jeff Hamilton * http://www.apache.org/licenses/LICENSE-2.0 93d670de5ce9180e0a75d0884832c4714cb56e1b5Jeff Hamilton * 103d670de5ce9180e0a75d0884832c4714cb56e1b5Jeff Hamilton * Unless required by applicable law or agreed to in writing, software 113d670de5ce9180e0a75d0884832c4714cb56e1b5Jeff Hamilton * distributed under the License is distributed on an "AS IS" BASIS, 123d670de5ce9180e0a75d0884832c4714cb56e1b5Jeff Hamilton * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 133d670de5ce9180e0a75d0884832c4714cb56e1b5Jeff Hamilton * See the License for the specific language governing permissions and 143d670de5ce9180e0a75d0884832c4714cb56e1b5Jeff Hamilton * limitations under the License. 153d670de5ce9180e0a75d0884832c4714cb56e1b5Jeff Hamilton */ 163d670de5ce9180e0a75d0884832c4714cb56e1b5Jeff Hamilton 173d670de5ce9180e0a75d0884832c4714cb56e1b5Jeff Hamiltonpackage com.android.settings.nfc; 183d670de5ce9180e0a75d0884832c4714cb56e1b5Jeff Hamilton 19962a141f4c67fdb02d9062530f5f9e9cfb5e674aFabrice Di Meglioimport android.app.ActionBar; 203d670de5ce9180e0a75d0884832c4714cb56e1b5Jeff Hamiltonimport android.app.Fragment; 2125a1e95ed607a8517694df4dccfccdff00b0f082Amith Yamasaniimport android.content.Context; 223d670de5ce9180e0a75d0884832c4714cb56e1b5Jeff Hamiltonimport android.nfc.NfcAdapter; 233d670de5ce9180e0a75d0884832c4714cb56e1b5Jeff Hamiltonimport android.os.Bundle; 2425a1e95ed607a8517694df4dccfccdff00b0f082Amith Yamasaniimport android.os.UserManager; 253d670de5ce9180e0a75d0884832c4714cb56e1b5Jeff Hamiltonimport android.view.LayoutInflater; 263d670de5ce9180e0a75d0884832c4714cb56e1b5Jeff Hamiltonimport android.view.View; 273d670de5ce9180e0a75d0884832c4714cb56e1b5Jeff Hamiltonimport android.view.ViewGroup; 283d670de5ce9180e0a75d0884832c4714cb56e1b5Jeff Hamiltonimport android.widget.Switch; 2925a1e95ed607a8517694df4dccfccdff00b0f082Amith Yamasani 303d670de5ce9180e0a75d0884832c4714cb56e1b5Jeff Hamiltonimport com.android.settings.R; 31263bcc8b732dbb47d3ce63904e0e05191fabbad6Fabrice Di Meglioimport com.android.settings.SettingsActivity; 32072d98aba6c86596d7c14e5b8b490a4703d8226fFabrice Di Meglioimport com.android.settings.widget.SwitchBar; 333d670de5ce9180e0a75d0884832c4714cb56e1b5Jeff Hamilton 343d670de5ce9180e0a75d0884832c4714cb56e1b5Jeff Hamiltonpublic class AndroidBeam extends Fragment 35072d98aba6c86596d7c14e5b8b490a4703d8226fFabrice Di Meglio implements SwitchBar.OnSwitchChangeListener { 363d670de5ce9180e0a75d0884832c4714cb56e1b5Jeff Hamilton private View mView; 373d670de5ce9180e0a75d0884832c4714cb56e1b5Jeff Hamilton private NfcAdapter mNfcAdapter; 38072d98aba6c86596d7c14e5b8b490a4703d8226fFabrice Di Meglio private SwitchBar mSwitchBar; 39658508c8f6f426127c01f91e85c2ede2300e71bdMartijn Coenen private CharSequence mOldActivityTitle; 4025a1e95ed607a8517694df4dccfccdff00b0f082Amith Yamasani private boolean mBeamDisallowed; 413d670de5ce9180e0a75d0884832c4714cb56e1b5Jeff Hamilton 423d670de5ce9180e0a75d0884832c4714cb56e1b5Jeff Hamilton @Override 433d670de5ce9180e0a75d0884832c4714cb56e1b5Jeff Hamilton public void onCreate(Bundle savedInstanceState) { 443d670de5ce9180e0a75d0884832c4714cb56e1b5Jeff Hamilton super.onCreate(savedInstanceState); 453d670de5ce9180e0a75d0884832c4714cb56e1b5Jeff Hamilton 46962a141f4c67fdb02d9062530f5f9e9cfb5e674aFabrice Di Meglio final ActionBar actionBar = getActivity().getActionBar(); 473d670de5ce9180e0a75d0884832c4714cb56e1b5Jeff Hamilton 48962a141f4c67fdb02d9062530f5f9e9cfb5e674aFabrice Di Meglio mOldActivityTitle = actionBar.getTitle(); 49962a141f4c67fdb02d9062530f5f9e9cfb5e674aFabrice Di Meglio actionBar.setTitle(R.string.android_beam_settings_title); 503d670de5ce9180e0a75d0884832c4714cb56e1b5Jeff Hamilton 513d670de5ce9180e0a75d0884832c4714cb56e1b5Jeff Hamilton mNfcAdapter = NfcAdapter.getDefaultAdapter(getActivity()); 5225a1e95ed607a8517694df4dccfccdff00b0f082Amith Yamasani mBeamDisallowed = ((UserManager) getActivity().getSystemService(Context.USER_SERVICE)) 5325a1e95ed607a8517694df4dccfccdff00b0f082Amith Yamasani .hasUserRestriction(UserManager.DISALLOW_OUTGOING_BEAM); 54962a141f4c67fdb02d9062530f5f9e9cfb5e674aFabrice Di Meglio } 55962a141f4c67fdb02d9062530f5f9e9cfb5e674aFabrice Di Meglio 56962a141f4c67fdb02d9062530f5f9e9cfb5e674aFabrice Di Meglio @Override 57962a141f4c67fdb02d9062530f5f9e9cfb5e674aFabrice Di Meglio public View onCreateView(LayoutInflater inflater, ViewGroup container, 58962a141f4c67fdb02d9062530f5f9e9cfb5e674aFabrice Di Meglio Bundle savedInstanceState) { 59962a141f4c67fdb02d9062530f5f9e9cfb5e674aFabrice Di Meglio mView = inflater.inflate(R.layout.android_beam, container, false); 60962a141f4c67fdb02d9062530f5f9e9cfb5e674aFabrice Di Meglio 61962a141f4c67fdb02d9062530f5f9e9cfb5e674aFabrice Di Meglio return mView; 62962a141f4c67fdb02d9062530f5f9e9cfb5e674aFabrice Di Meglio } 63962a141f4c67fdb02d9062530f5f9e9cfb5e674aFabrice Di Meglio 64962a141f4c67fdb02d9062530f5f9e9cfb5e674aFabrice Di Meglio @Override 65962a141f4c67fdb02d9062530f5f9e9cfb5e674aFabrice Di Meglio public void onActivityCreated(Bundle savedInstanceState) { 66962a141f4c67fdb02d9062530f5f9e9cfb5e674aFabrice Di Meglio super.onActivityCreated(savedInstanceState); 67962a141f4c67fdb02d9062530f5f9e9cfb5e674aFabrice Di Meglio 68962a141f4c67fdb02d9062530f5f9e9cfb5e674aFabrice Di Meglio SettingsActivity activity = (SettingsActivity) getActivity(); 69072d98aba6c86596d7c14e5b8b490a4703d8226fFabrice Di Meglio 70072d98aba6c86596d7c14e5b8b490a4703d8226fFabrice Di Meglio mSwitchBar = activity.getSwitchBar(); 7125a1e95ed607a8517694df4dccfccdff00b0f082Amith Yamasani mSwitchBar.setChecked(!mBeamDisallowed && mNfcAdapter.isNdefPushEnabled()); 72072d98aba6c86596d7c14e5b8b490a4703d8226fFabrice Di Meglio mSwitchBar.addOnSwitchChangeListener(this); 7325a1e95ed607a8517694df4dccfccdff00b0f082Amith Yamasani mSwitchBar.setEnabled(!mBeamDisallowed); 74072d98aba6c86596d7c14e5b8b490a4703d8226fFabrice Di Meglio mSwitchBar.show(); 75962a141f4c67fdb02d9062530f5f9e9cfb5e674aFabrice Di Meglio } 76072d98aba6c86596d7c14e5b8b490a4703d8226fFabrice Di Meglio 77962a141f4c67fdb02d9062530f5f9e9cfb5e674aFabrice Di Meglio @Override 78658508c8f6f426127c01f91e85c2ede2300e71bdMartijn Coenen public void onDestroyView() { 79658508c8f6f426127c01f91e85c2ede2300e71bdMartijn Coenen super.onDestroyView(); 80658508c8f6f426127c01f91e85c2ede2300e71bdMartijn Coenen if (mOldActivityTitle != null) { 81658508c8f6f426127c01f91e85c2ede2300e71bdMartijn Coenen getActivity().getActionBar().setTitle(mOldActivityTitle); 82658508c8f6f426127c01f91e85c2ede2300e71bdMartijn Coenen } 83138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio mSwitchBar.removeOnSwitchChangeListener(this); 84138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio mSwitchBar.hide(); 85658508c8f6f426127c01f91e85c2ede2300e71bdMartijn Coenen } 86658508c8f6f426127c01f91e85c2ede2300e71bdMartijn Coenen 873d670de5ce9180e0a75d0884832c4714cb56e1b5Jeff Hamilton @Override 88072d98aba6c86596d7c14e5b8b490a4703d8226fFabrice Di Meglio public void onSwitchChanged(Switch switchView, boolean desiredState) { 893d670de5ce9180e0a75d0884832c4714cb56e1b5Jeff Hamilton boolean success = false; 90138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio mSwitchBar.setEnabled(false); 913d670de5ce9180e0a75d0884832c4714cb56e1b5Jeff Hamilton if (desiredState) { 923d670de5ce9180e0a75d0884832c4714cb56e1b5Jeff Hamilton success = mNfcAdapter.enableNdefPush(); 933d670de5ce9180e0a75d0884832c4714cb56e1b5Jeff Hamilton } else { 943d670de5ce9180e0a75d0884832c4714cb56e1b5Jeff Hamilton success = mNfcAdapter.disableNdefPush(); 953d670de5ce9180e0a75d0884832c4714cb56e1b5Jeff Hamilton } 963d670de5ce9180e0a75d0884832c4714cb56e1b5Jeff Hamilton if (success) { 97138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio mSwitchBar.setChecked(desiredState); 983d670de5ce9180e0a75d0884832c4714cb56e1b5Jeff Hamilton } 99138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio mSwitchBar.setEnabled(true); 1003d670de5ce9180e0a75d0884832c4714cb56e1b5Jeff Hamilton } 1013d670de5ce9180e0a75d0884832c4714cb56e1b5Jeff Hamilton} 102