Android特定的通知声音由用户在应用程序中选择

Android特定的通知声音由用户在应用程序中选择,android,firebase,push-notification,firebase-cloud-messaging,Android,Firebase,Push Notification,Firebase Cloud Messaging,在我的应用程序中,我将推送通知的定制独特声音与FirebaseMessagingService捆绑在一起 我还内置了用户选择自己定制声音的功能 如果应用程序中使用了,则使用以下代码:如果用户选择了声音,则将播放。但是如果退出应用程序,则将播放我的自定义独特声音 如果用户不使用应用程序而不是我的唯一声音,我希望为他们选择的自定义通知声音(如果他们选择了一个)播放 我已将铃声声音URI存储在首选项文件中:content://media/internal/audio/media/57 如果您需要在客户

在我的应用程序中,我将推送通知的定制独特声音与FirebaseMessagingService捆绑在一起

我还内置了用户选择自己定制声音的功能

如果应用程序中使用了,则使用以下代码:如果用户选择了声音,则将播放。但是如果退出应用程序,则将播放我的自定义独特声音

如果用户不使用应用程序而不是我的唯一声音,我希望为他们选择的自定义通知声音(如果他们选择了一个)播放

我已将铃声声音URI存储在首选项文件中:content://media/internal/audio/media/57


如果您需要在客户端区分应用程序是在前台还是后台,请尝试通过应用程序类实现接口
ActivityLifecycleCallbacks
,并在应用程序进入后台后设置一个标志

public class App extends Application implements Application.ActivityLifecycleCallbacks {

    private static boolean isBackground = false;

    @Override
    public void onActivityStarted(Activity activity) {
        isBackground = false;
    }

    @Override
    public void onActivityStopped(Activity activity) {
        isBackground = true;
    }

    public static boolean isInBackground(){
        return this.isBackground;
    }
}
另外,不要忘记在
AndroidManifest.xml
文件中定义这个自定义应用程序类

<application
    android:name=".App">
</application>

如果您需要在客户端区分应用程序是在前台还是后台,请尝试通过应用程序类实现接口
ActivityLifecycleCallbacks
,并在应用程序进入后台后设置一个标志

public class App extends Application implements Application.ActivityLifecycleCallbacks {

    private static boolean isBackground = false;

    @Override
    public void onActivityStarted(Activity activity) {
        isBackground = false;
    }

    @Override
    public void onActivityStopped(Activity activity) {
        isBackground = true;
    }

    public static boolean isInBackground(){
        return this.isBackground;
    }
}
另外,不要忘记在
AndroidManifest.xml
文件中定义这个自定义应用程序类

<application
    android:name=".App">
</application>

你的声音文件是什么格式的?我的声音文件是MP3。我认为这不是问题所在。它在应用程序内外都能正常播放。我希望用户从应用程序中选择铃声并播放。它只在应用程序中运行。我也需要它在应用程序外播放。好吧,如果我理解正确,你需要实现一个逻辑来检测用户是否在应用程序内。换句话说,应用程序是在前台还是后台?在应用程序类中实现ActivityLifecycleCallbacks,并在应用程序进入后台时设置一个标志(其onStop()回调方法)。声音文件的格式是什么?我的声音文件是MP3。我认为这不是问题所在。它在应用程序内外都能正常播放。我希望用户从应用程序中选择铃声并播放。它只在应用程序中运行。我也需要它在应用程序外播放。好吧,如果我理解正确,你需要实现一个逻辑来检测用户是否在应用程序内。换句话说,应用程序是在前台还是后台?在应用程序类中实现ActivityLifecycleCallbacks,并在应用程序进入后台时设置一个标志(其onStop()回调方法).我的名字中已经有了android.support.multidex.MultiDexApplication..这根本不是问题,因为
MultiDexApplication
扩展了
Application
类。只需实现该接口,并保持应用程序(后台|前台)状态的一些标志,正如我在上面发送给你的:)我已经有了android.support.multidex.MultiDexApplication在我名下..这根本不是问题,因为
MultiDexApplication
扩展了
Application
类。只需实现该接口,并保持应用程序(后台|前台)状态的一些标志,正如我在上面发送给您的:)