声音 (MediaPlayer) 在 Android 上无法与振动同时工作

问题描述

我正在尝试创建同时带有声音和振动的警报。当应用程序在前台运行时,一切正常,声音和振动同时工作。但是当应用程序最小化时,只有声音有效。

从服务启动通知

        public override void ItemAdded(SPItemEventProperties properties)
        {
            SPWeb web = properties.Web;

            if (properties.ListTitle.Contains("Request"))
            {                
                SPListItem itemAdded = properties.ListItem;
                SPList listRequesters = web.Lists["Requesters"];
                SPList listOrganisations = web.Lists["Organisations"];
                                
                string username = new SPFieldUserValue(web,itemAdded["Author"].ToString()).User.Name;
                string queryString = @"<Where><Eq><FieldRef Name='Requester' /><Value Type='User'>" + username + @"</Value></Eq></Where>";
                SPQuery query = new SPQuery
                {
                    Query = queryString
                };

                SPListItemCollection itemresRequesters = listRequesters.GetItems(query);
                string sapNumber = "";
                if (itemresRequesters.Count == 1)
                {
                    foreach (SPListItem itemresult in itemresRequesters)
                    {
                        sapNumber = itemresult["SAPNumber"].ToString();
                        itemAdded["Manager"] = itemresult["ManagerL1"];
                        itemAdded["SAPNumber"] = itemresult["SAPNumber"];
                        itemAdded.Update();
                    }
                }

                else
                {
                    if (itemresRequesters == null)
                    {
                        logops("ERItemAdded","Missing requesters on Requesters list");
                    }
                    else
                    {
                        logops("ERItemAdded","Requesters - multiple users of the same username :" + itemresRequesters.Count);
                    }
                }

                string queryStringOrg = @"<Where><Eq><FieldRef Name='SAPNumber' /><Value Type='Text'>" + sapNumber + @"</Value></Eq></Where>";
                SPQuery queryOrg = new SPQuery
                {
                    Query = queryStringOrg
                };

                SPListItemCollection itemresOrganisations = listOrganisations.GetItems(queryOrg);
                if (itemresOrganisations.Count == 1)
                {
                    foreach (SPListItem itemresult in itemresOrganisations)
                    {
                        itemAdded["ManagerL2"] = itemresult["Manager L2"];
                        itemAdded["ManagerL3"] = itemresult["Manager L3"];
                        itemAdded["Boss"] = itemresult["Boss"];
                        itemAdded.Update();
                        logops("ERItemAdded","Higher Managers updated");
                    }
                }
                else
                {
                    if (itemresOrganisations == null)
                    {
                        logops("ERItemAdded","Organisations - no such Organisation");
                    }
                    else
                    {
                        logops("ERItemAdded","Organisations - too many Organisations :" + itemresOrganisations.Count);
                    }
                }

            //Request Number
            DateTime data = (DateTime)itemAdded["Created"];
                string numerWniosku = sapNumber +"-" + data.ToString("yyyyMMdd") + "-" + itemAdded["ID"];
                itemAdded["Request Number"] = numerWniosku;
                logops("ERItemAdded","Request number : " + itemAdded["Request Number"].ToString());
                //Request status @R_782_4045@ion
                itemAdded["Request Status"] = "Launched";
                //Count Attachements
                int att = itemAdded.Attachments.Count;
                itemAdded["Att"] = att.ToString();
                itemAdded.Update();
                logops("ERItemAdded","Attachments counted : " + itemAdded.Attachments.Count.ToString());
                logops("#############","End of ER");

            }

            else
            {
                logops("ERItemAdded","Improper list");
            }
        }

        private void logops(string strEvent,string message)
        {
            FileIOPermission fp = new FileIOPermission(PermissionState.Unrestricted);
            fp.AddpathList(FileIOPermissionAccess.AllAccess,@"d:\Logs");
            StreamWriter sw = File.AppendText(@"D:\Logs\ER_Requests_LOG.txt");
            StringBuilder sb = new StringBuilder();
            sb.Append(DateTime.Now.ToString() + " | " + strEvent +" | " + message + "\n");
            sw.WriteLine(sb.ToString());
            sw.Close();
        }
    }

...

startSoundForNotif(STATE_TIMER_FINISHED);
startVibrator();

LogCat 中的错误

private void startSoundForNotif(int State) {
        if (sPrefSettings.getBoolean("switch_notif",true)) {
            int mSoundRes;
            if (State == STATE_TIMER_FINISHED) {
                mSoundRes = sPrefSettings.getInt(KEY_PREF_SOUND_RES,0);
            } else {
                mSoundRes = sPrefSettings.getInt(KEY_PREF_SOUND_BREAK_RES,0);
            }

            if (mSoundRes == 0) {
               
                Uri defaultSoundUri = ringtoneManager.getDefaultUri(ringtoneManager.TYPE_NOTIFICATION);
                MediaPlayer mPlayer = MediaPlayer.create(getApplication(),defaultSoundUri);
                mPlayer.start();
            } else {
                MediaPlayer mPlayer = MediaPlayer.create(getApplication(),mSoundRes);
                mPlayer.start();
            }
        }
    }

    private void startVibrator() {
        int mVibroNum = sPrefSettings.getInt(KEY_PREF_VIbro_NUM,0);
        if (mVibroNum!=0){
        Vibrator vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
        ListSounds mListSounds = new ListSounds();
        long [][] ListVibro = mListSounds.getListVibro();
        if (vibrator.hasVibrator()) {
            vibrator.vibrate(ListVibro[mVibroNum],-1);}
        }
    }

有人可以帮忙解决问题吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)