📄 tryplaying.c
字号:
/*
*******************************************************************************
* ACTOS AP
* main ap of sdk 3.0
*
* (c) Copyright, Actions Co,Ld.
* All Right Reserved
*
*******************************************************************************
*/
#pragma codeseg(CODE_2)
#include "ap_radio.h"
#include "actos.h"
extern slider_t slider;
extern comval_t F_comval;
extern WORD FMStationTab[40]; // 前20个是US, 后20个是JP.
extern fm_play_status_t FMStatus;
extern FMRADIO_param_t radio_param;
extern fm_play_status_t m_FMPlaystatus;
extern WORD FMAutoTab[20]; // 全自动收台,预存台.
extern BYTE AutoTabNum; // 预存台数.
void volume_callback2(int Vol) //音量设置的CALLBACK函数
{
//实时改变音量的值
FMStatus.vol_display = Vol;
FMStatus.volume = Vol * 31 / g_comval.VolumeMax;
fmSendCommand(MC_SETVOLUME, FMStatus.volume);
if (FMStatus.volume == 0)
fmSendCommand(MC_MUTE, SetMUTE);
else
fmSendCommand(MC_MUTE, releaseMUTE);
}
/*
********************************************************************************
* Description : 试播放5秒钟
*
* Arguments :
*
* Returns : RESULT_RADIO:PLAY和MODE键, RESULT_IGNORE:NEXT和LAST键
其它为热键
*
* Notes :
*
********************************************************************************
*/
int TryPlayingHandle(void)
{
int key, play_time = 12;
int flash_point = 1;
bool loop = TRUE;
int k, i;
if (FMStatus.mode == 0)
{
k = (FMStatus.freq) *100/ 200;
}
else
{
k = (FMStatus.freq)*100 / 200;
}
fmSendCommand(MC_PLAY, 0);
fmSendCommand(MC_SETVOLUME, FMStatus.volume);
while (loop)
{
key = ap_get_message();
switch (key)
{
case AP_MSG_STANDBY:
//do nothing
break;
case AP_KEY_NEXT | AP_KEY_UP:
case AP_KEY_PREV | AP_KEY_UP: // 停止试播
return RESULT_IGNORE;
case AP_KEY_PLAY | AP_KEY_UP:
case AP_KEY_MODE | AP_KEY_UP: // 保存电台, 返回播放界面.
loop = FALSE;
key = RESULT_RADIO;
break;
case AP_MSG_RTC: // 时间记数,闪烁箭头.
ui_show_batt(GetBattery(), g_comval.BatteryType);
play_time--;
if (play_time <= 0)
{
loop = FALSE;
key = 0;
}
if (flash_point) // 箭头闪烁
{
if (FMStatus.mode == 0)
{
ResShowPic(DWNARROW, 11 - 5 + k, 16); //显示箭头
//ResShowPic(FQBAR,0,24); //显示US频率条
}
else
{
ResShowPic(DWNARROW, 30 - 6 + k, 16); //显示箭头
//ResShowPic(FQBAR2,0,24); //显示JP频率条
}
flash_point = 0;
}
else // 清除箭头
{
if (FMStatus.mode == 0)
{
SetTextPos(11 - 5 + k, 16);
}
else
{
SetTextPos(30 - 6 + k, 16);
}
PutS(" ", 2);
flash_point = 1;
}
UpdateScreen(NULL);
break;
case AP_KEY_VOLADD: // 音量调节.
case AP_KEY_VOLSUB:
ClearScreen(NULL);
ResShowPic(VOLUMEBK, 0, 0);
slider.max = g_comval.VolumeMax;
slider.min = 0;
slider.step = 1;
FMStatus.volume = FMStatus.vol_display * 31 / g_comval.VolumeMax;
slider.value = FMStatus.vol_display;
key = ui_slider(&slider, volume_callback2); //音量滚动条显示
m_FMPlaystatus.vol_display = FMStatus.vol_display;
FMStatus.volume = FMStatus.vol_display * 31 / g_comval.VolumeMax;
fmSendCommand(MC_GETSTATUS, (int) &FMStatus);
loop = FALSE;
break;
default: //热键处理
key = ap_handle_hotkey(key);
if (key != 0)
{
loop = FALSE;
}
}
}
//fmSendCommand(MC_MUTE,SetMUTE);
fmSendCommand(MC_GETFREQ, (int) &k); // 保存电台
FMAutoTab[AutoTabNum] = k;
AutoTabNum++;
for (i = AutoTabNum; i < 20; i++)
{
if (radio_param.param1[i] == k) // 删除重复的电台.
{
radio_param.param1[i] = 0;
// FMStatus.station_count--;
}
}
return key;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -