当前位置: 代码迷 >> 综合 >> 关闭Java音量后仍能听到系统提示音
  详细解决方案

关闭Java音量后仍能听到系统提示音

热度:38   发布时间:2024-01-19 20:39:16.0
在Pluto的项目中,Java可以单独设置音量。但是当Java音量设置为OFF时,仍然可以听到Warning/Error/Alarm等系统提示音。 
[SOLUTION] 
分析: 
对于warning/error/alarm声音来说,不是通过Java的MMAPI播放的,而是通过JUI的接口,参考的也不是java audio level而是系统的ring level。因此,即使Java音量关闭,还是能听到正常的系统提示音。 
如果需要统一参考java audio level,在java audio level为0时不播放系统提示音,可以参照如下修改。 
kal_bool jui_widget_play_sound(kal_int32 soundType) 
{ 
 /*----------------------------------------------------------------*/ 
 /* Local Variables */ 
 /*----------------------------------------------------------------*/ 
 aud_play_id_struct id_param; 
 med_result_enum result; 
 /*----------------------------------------------------------------*/ 
 /* Code Body */ 
 /*----------------------------------------------------------------*/ 
 kal_trace(JVM_TRACE_TYPE_JUI, FUNC_J2ME_JUI_WIDGET_PLAY_SOUND, soundType,
jam_get_ring_volume_level()); 
 kal_prompt_trace(MOD_J2ME, "global audio level is %d", jam_get_aud_volume_level()); 
 //begin 
 /* If mute, return directly */ 
 //if (jam_get_ring_volume_level() == 0) 
 if (jam_get_aud_volume_level() == 0) 
 { 
 kal_prompt_trace(MOD_J2ME, "because audio level is 0, then no ring tone"); 
 return KAL_TRUE; 
 } 
 //end 
 if ((soundType == JUI_ALERT_WARNING) || (soundType == JUI_ALERT_ERROR) || (soundType ==
JUI_ALERT_ALARM)) 
 { 
 switch (soundType) 
 { 
 case JUI_ALERT_WARNING: 
 id_param.audio_id = (U8) TONE_WARNING1; 
 break; 
 case JUI_ALERT_ERROR: 
 id_param.audio_id = (U8) TONE_ERROR1; 
 break; 
 default: 
 id_param.audio_id = (U8) TONE_WARNING1; 
 break; 
 } 
 id_param.play_style = 0; 
 id_param.volume = jam_get_ring_volume_level(); 
 id_param.output_path = MDI_DEVICE_SPEAKER2; 
 id_param.identifier = 0; 
 result = (med_result_enum) media_aud_play_id(stack_int_get_active_module_id(), &id_param); 
 kal_trace(JVM_TRACE_TYPE_JUI,FUNC_J2ME_JUI_WIDGET_PLAY_SOUND_RESULT,result); 
 return KAL_TRUE; 
 } 
 else 
 { 
 kal_trace(JVM_TRACE_TYPE_JUI,FUNC_J2ME_JUI_WIDGET_PLAY_SOUND_RESULT,-1); 
 return KAL_FALSE; 
 } 
}