Audio can't work with a capture device on linux

I have an USB MIC on my linux box, and I tried to capture audio from it, but failed.
It can work on another device (Webcam C270).
I used the test code as below:

const char *device = “USB MIC Analog Stereo”;
//const char *device = “Webcam C270 Mono”;

void Capt (void *userdata,
Uint8 *stream,
int len)
{
for (int i = 0; i < len; i++)
{
printf ("%02X",
stream[i]);
if (((i + 1) % 16) == 0)
printf("\n");
else
printf(" ");
}
return;
}

int main ()
{
SDL_Init(SDL_INIT_AUDIO);
// 打开采集设备
SDL_AudioSpec spec =
{
.freq = 16000,
.channels = 1,
.format = AUDIO_S16SYS,
.samples = 16000 / 1000 * 2.5,
.callback = Capt,
.userdata = NULL
};
SDL_AudioDeviceID id = SDL_OpenAudioDevice(device,
SDL_TRUE,
&spec,
NULL,
0);
if (!id)
if (!id)
{
fprintf (stderr,
“无法打开设备[%s]:%s\n”,
device,
SDL_GetError());
goto quit;
}
else
SDL_PauseAudioDevice (id,
SDL_FALSE);

SDL_Delay (1000);

SDL_CloseAudioDevice(id);

quit:
SDL_Quit();
return 0;
}

It worked on MacOS. But on the linux, output is all zero values.
Anyone can help me?