在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; 
  } 
 }










