Compartilhar via


Telephone Dialer

Windows Mobile SupportedWindows Embedded CE Not Supported

9/8/2008

Este amostra de código é nomeado CeDialer. Ele demonstra como local chamar um modem usando o Telefonia API. A de saída Telephony API oferece suporte a chamadas, mas não tem suporte de entrada chamadas. TAPI também oferece suporte ao serviço instalável provedores. O Interface do provedor de serviço de telefonia (TSPI) Permite que você crie aplicativos serviço telefonia desse identificador chamadas função remoto aplicativos para executar saída e comunicações controle sobre a rede telefônica.

Área recurso

APIs relevantes

O uso

Para executar o amostra de código

  1. Navegue até a arquivo de solução (*.sln) e clique duplo-la. Por padrão, a solução arquivos são copiados para o seguinte pastas:

    C:\Arquivos de programas\Windows Mobile 6 SDK\Samples\Common\CPP\Win32\CellCore\CeDialer

    Microsoft Visual Studio 2005 inicia e carrega a solução.

  2. Crie a solução (Ctrl+Shift+B).

  3. Implante a solução (F5).

EXPLICAÇÃO programa

  • Usando TAPI para tornar um modem chamar
    Um aplicativo baseado em Windows Embedded CE que usa um modem deve ser capaz tarefas identificador como inicializar o modem, abrindo a linha, discagem um número de telefone e desconectando quando a sessão está completo. O seguinte é as principais etapas e associado funções para discagem um chamar no CeDialer:

    1. Inicializando TAPI (usando InitializeTAPI e GetLineInfo).
    2. Abrindo uma linha e fazendo a chamar (usando MakePhoneCall).
    3. Limpeza (usando CurrentLineClose).
  • Inicializando TAPI
    Ao inicializar TAPI, o aplicativo deve estabelecer uma maneira de se comunicar entre um aplicativo baseado em Windows Embedded CE e TAPI.
  • A função CEDialer InitializeTAPI

    1. Chama lineInitialize para inicializar TAPI.
    2. Chama o função GetLineInfo personalizado para a linha aberto.
    3. GetLineInfo chama lineNegotiateAPIVersion para localizar versão TAPI API para usar.
    4. GetLineInfo chama lineGetDevCaps para obter informações na linha.
  • lineInitialize
    A função lineInitialize inicializa uso do aplicativo do TAPI.DLL para uso subseqüente. Ele registra o mecanismo notificação Application-specific e retorna o número da linha de dispositivos disponível para o aplicativo.
  • lineCallbackFunc
    Para receber avisos status, o aplicativo deve implementar um TAPI lineCallbackFunc função para estabelecer uma maneira de se comunicar com TAPI. Um aplicativo informa o endereço da função callback TAPI in a chamar para lineInitialize. O função callback é usado para notificar aplicativos de alterações no status de chamadas, linhas e dispositivos de telefone. TAPI usa o função callback para enviar mensagens para o aplicativo.
  • lineNegotiateAPIVersion
    A função lineNegotiateAPIVersion, chamado pelo GetLineInfo indica qual versão do TAPI o aplicativo oferece suporte e negocia que número de versão API TAPI deve usar. O motivo para negociar a versão TAPI é possível

    -se de que o protocolo correto é usado. Novas versões podem definir novos recursos, novos campos para dados estruturas e assim por diante. Versão números indicam como interpretar, portanto, vários dados, estruturas e mensagens. Se for versão intervalos não coincidirem, o aplicativo e API ou serviço provedor versões são incompatível e um erro será retornada. Quando a função é bem-sucedida, os dados de linha such as identificador permanente, número de endereços e nome de linha, podem ser obtidos da estrutura de LINEDEVCAPS.

  • lineGetDevCaps
    Quando um aplicativo foi iniciado e negociado a API, o aplicativo precisa verificar se a linha for utilizável e pronto para discagem fora. O aplicativo fazer isso, verificando os valores preenchidos para a estrutura LINEDEVCAPS por chamado a função lineGetDevCaps.

    A função lineGetDevCaps preencherá a estrutura LINEDEVCAPS, que define o provedor serviço telefônico. O tamanho da estrutura pode ser diferente para serviço diferentes provedores, e, portanto, o aplicativo deve verificar se o tamanho do buffer é suficiente. Para verificar se o quantidade de espaço fornecido para a estrutura é suficiente para o tamanho da estrutura do provedor, compare os campos dwNeededSize e dwTotalSize. Se o tamanho total é muito pequeno, o aplicativo precisa transmitir um maior reserva para a função.

  • Abrindo uma linha e fazer um chamar
    Depois que TAPI é inicializado usando a função lineInitialize, um aplicativo precisa get um disponível linha usando a função lineOpen. No exemplo de CEDialer a função MakePhoneCall:

    1. Chama lineOpen para a linha aberto.
    2. Chama lineTranslateAdress para converter o número de telefone.
    3. Configura parâmetros chamar na estrutura LINECALLPARAMS. A estrutura LINECALLPARAMS descreve parâmetros fornecidos ao fazer chamadas usando lineMakeCall. A estrutura LINECALLPARAMS também é usada como um parâmetro em outras operações.
    4. Chama lineMakeCall.
  • lineOpen
    A função lineOpen abre o dispositivo de linha especificado e retorna um identificador de linha para o dispositivo de linha aberto. Esse identificador de linha é usado em operações subseqüentes no dispositivo de linha. Mais tarde, quando o aplicativo for concluído com o dispositivo de linha, ele pode fechá-lo com lineClose.

    Especifica a função lineOpen: Um identificador para o registro aplicativo com TAPI, um valor que identifica o dispositivo de linha a ser aberto. Windows Embedded CE não suporte o valor LINEMAPPER para o parâmetro dwDeviceID, um ponteiro para um identificador de linha carregado com o identificador que representa o dispositivo de linha aberto.

    Número de versão API sob a qual o aplicativo e TAPI operam compatibly. Esse número é obtido por chamado de lineNegotiateAPIVersion.

    Número de versão extensão sob a qual o aplicativo e o provedor serviço operam compatibly. Windows Embedded CE não suporte não extensões específicas do provedor. O parâmetro dwExtVersion deve ser definido como zero prior to chamado a função lineOpen.

    Usuário-dados instância passados voltar para o aplicativo com cada mensagem associado com esta linha ou endereços ou chamadas nesta linha. Este parâmetro não é interpretado pelo TAPI.

    O privilégio de aplicativo deseja para as chamadas que ele é notificado para. Este parâmetro pode ser uma combinação das constantes LINECALLPRIVILEGE.

  • lineMakeCall
    Para local um chamar, o aplicativo deve chamar a função lineMakeCall usando a estrutura LINECALLPARAMS. O aplicativo CEDialer fornece uma caixa diálogo para um usuário para inserir o número de telefone da sua escolha. TAPI envia mensagens LINE_CALLSTATE para indicar o progresso do chamar. De exemplo, LINE_CALLSTATE indica estados de conexão, discagem, continuar e assim por diante. As mensagens variar depending on o tipo de chamar o serviço fornecido. O aplicativo não deve ser projetado para um tipo ou uma seqüência especial dos estados chamar.

    Durante transferência de dados, TAPI continua a gerenciar a conexão, mas o aplicativo alças transmissão de dados e recepção. Quando a transmissão estiver completo, TAPI retorna uma mensagem LINE_CALLSTATE, tal como um indicando que um remoto desconectar ocorreu. O exemplo CeDialer não transmissão de dados identificador.

    Cada chamar de um dispositivo Windows Embedded CE é identificado por um identificador chamar. Um identificador chamar fornece um ponteiro para um valor para identificar um chamar específico. TAPI atribui chamar manipula quando necessário. Um identificador chamar existe para cada chamar pertencente um aplicativo. Determinadas funções TAPI criar novas chamadas. Como eles faz isso, elas retornam alças chamar novo para o aplicativo.

    A função lineMakeCall tem a seguinte Parâmetros: Um identificador para o aberto dispositivo de linha na qual é um chamar originou um ponteiro para o identificador para a chamar. Use este identificador chamar para identificar a chamar quando chamar outras operações telefonia na chamar.

    Um ponteiro para endereço de destino. Isso segue o padrão codificar área e formato número de telefone.

    Codificar o Country/Region do chamado parte um ponteiro para uma estrutura LINECALLPARAMS. Essa estrutura permite que o aplicativo para especificar como configurar o chamar. Se NULL for especificada, um usar como padrão 3.1 kHz canalizar voz chamar é estabelecida e um endereço de origem arbitrário na linha está selecionado. Essa estrutura permite que o aplicativo para selecionar elementos such as o modo de transmissão chamar, dados Taxa, mídia esperada e discagem parâmetros.

    A função MakePhoneCall demonstra como a estrutura LPCALLPARAMS pode ser preenchida para suporte de de saída chamar.

    Após a função lineMakeCall com êxito configura a chamar, TAPI retorna uma mensagem através de função callback LINE_REPLY. A mensagem LINE_REPLY também informa o aplicativo que o identificador chamar retornado pelo lineMakeCall é válido. Esta mensagem indica somente que a chamar foi estabelecida no local final, que talvez é indicado por um tom discagem. O aplicativo, em seguida, pode usar essa linha para fazer chamadas de saída.

  • A limpeza
    Quando o aplicativo recebe uma mensagem indicando que a chamar foi finalizada, o aplicativo desconecta a chamar no local terminam com lineDrop. A função CEDialer CurrentLineClose:

    1. Chama linedrop para ato de soltar a atual chamar.
    2. Chama lineDeallocateCall para o identificador chamar versão para o chamar concluído.
    3. Chama lineClose para fechar a conexão de linha.
  • linedrop, lineDeallocateCall, lineclose
    Quando um usuário termina de chamar, o aplicativo deve desconectar e finalizar a chamar com lineDrop chamar a função lineDeallocateCall para livre memória System-allocated relacionado para o identificador chamar. A função lineDrop também pode ser usada para ato de soltar um chamar em andamento. Para finalmente fechar a linha, o aplicativo deve chamar lineClose.

Comentários

Em Windows Embedded CE, TAPI links para e chama funções TSPI usando padrão funções dynamic-link library (DLL).

TAPI o TSPI Unimodem usa Por padrão.

Ambientes de Desenvolvimento

SDK: Windows Mobile 6 Professional SDK e Windows Mobile 6 Standard SDK

Ambiente de desenvolvimento: Visual Studio 2005.

ActiveSync: Versão 4.5.

See Also

Concepts

Code Samples for Windows Mobile