में ब्रॉडकास्ट रिसीवर मैंने अपने फोन के लिए सिर्फ एक छोटा उपयोगिता ऐप लिखा था, जिसने कष्टप्रद वाहक को बूट करने पर खेला गया जिंगल प्रदान किया था। मैंने देखा कि ध्वनि बजाने से पहले फोन को चुप मोड में डाल दिया गया था, इसलिए मैंने बिजली पर चुप रहने और बूट पर ध्वनि बहाल करने के लिए यह छोटी उपयोगिता लिखी। यह जिंजरब्रेड पर गैलेक्सी एस 2 के लिए अच्छा काम करता है। पूरे कोड के दो वर्गों में है:आईसीएस
public class OnShutDownReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
AudioManager mgr=(AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
mgr.setRingerMode(AudioManager.RINGER_MODE_SILENT);
}
}
और
public class OnBootReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
AudioManager mgr=(AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
mgr.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
}
}
प्रकट
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.nbt.hush"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="7" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<receiver android:name=".OnBootReceiver" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
<receiver android:name=".OnShutDownReceiver" >
<intent-filter>
<action android:name="android.intent.action.ACTION_SHUTDOWN" />
</intent-filter>
</receiver>
</application>
</manifest>
अब मेरे फोन मेरी सेवा प्रदाता के आधार आईसीएस में अपग्रेड कर दिया गया है, तो वह अब काम करता है। अगर मैं फोन को शांत करने से पहले चुप मोड में डालता हूं, तो जिंगल नहीं खेलता है। इसलिए मुझे संदेह है कि न तो रिसीवर ट्रिगर होता है। (मैंने रिसीवर में कुछ लॉग कोड डाला जो दिखाया नहीं गया था, लेकिन मुझे संदेह है कि समय के कारण यह जिंजरब्रेड के तहत प्रदर्शित नहीं किया जा सकता है।)
कोई सुझाव कृपया यह क्यों नहीं होगा अब और काम करो?
मुझे लगता है कि मैं समझता हूं। तो अगर मैं एक टोस्ट या कुछ के साथ एक डमी गतिविधि जोड़ता हूं और इसे एक बार चलाता हूं, तो उसके बाद इसे काम करना चाहिए? – NickT
@NickT: हाँ। यदि आप इस ऐप को वितरित कर रहे थे, तो आप एंड्रॉइड के पुराने संस्करणों पर घटक को अक्षम करने के लिए कुछ चाल का उपयोग कर सकते हैं, इसलिए यह लॉन्चर को अव्यवस्थित नहीं करता है। यहां एक नमूना प्रोजेक्ट है जहां मैं उस चाल का उपयोग करता हूं: https://github.com/commonsguy/cw-advandroid/tree/master/RemoteViews/Plugin – CommonsWare
धन्यवाद, यह ठीक काम करता है, जब मैं फ़ोन चालू करता हूं तो मुझे सामाजिक शर्मिंदगी से बचाता है पर। (पीएस मैं पहली बार सवाल पोस्ट करते समय असली कोड से 'चुप' और 'सामान्य' गलत तरीके से चिपकाता था) – NickT