[Desenvolvimento] Como gravar um screenshot da tela de sua APP no álbum de fotos do WP

13

Olá pessoal, tudo bom?

Aproveito uma pergunta que me foi feita para escrever mais um post sobre desenvolvimento para Windows Phone. Dessa vez falo sobre como obter, via C#, um screenshot da tela da APP e armazenar a imagem na galeria de fotos do WP.

screenshot

No exemplo temos um botão que será o responsável por disparar a ação de captura da tela e armazenar o resultado no Media Library do Windows Phone. Veja o trecho de código em XAML:

1
2
3
4
5
6
...
<StackPanel x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0" VerticalAlignment="Bottom">
   <Image Source="Camera.png" Margin="0,0,0,60" Width="400" />
   <Button Name="btnScreenShot" Content="Obter Screenshot" Click="btnScreenShot_Click" />
</StackPanel>
...

Em seguida, foi implementado o método correspondente ao clique do botão. Veja o trecho de código em C#:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
//Namespaces incorporados ao projeto---------------
using System.Windows.Media.Imaging;
using Microsoft.Xna.Framework.Media; //Necessário fazer referência ao Microsoft.Xna.Framework no projeto do WP
using System.IO;
using Microsoft.Phone.Tasks;
//------------------------------------------------
...
...
private void btnScreenShot_Click(object sender, RoutedEventArgs e)
{
  var wb = new WriteableBitmap(LayoutRoot, new TranslateTransform());
  using (var mediaLibrary = new MediaLibrary())
  {
    using (var stream = new MemoryStream())
    {
      var filename = string.Format("Blog-Eduardo-H-Rizo-{0}.jpg", DateTime.Now.ToString("yyyy-MM-dd-hh-mm-ss"));
      wb.SaveJpeg(stream, wb.PixelWidth, wb.PixelHeight, 0, 100);
      stream.Seek(0, SeekOrigin.Begin);
      mediaLibrary.SavePicture(filename, stream);
      MessageBox.Show("Sua tela foi armazenada no álbum de fotos do Windows Phone.");
    }
  }
}
...

Como resultado temos a imagem da tela da APP armazenada no álbum de fotos do Windows Phone.

saved-pictures

Post Relacionado: 

Grande abraço,
Eduardo Henrique Rizo (@eduardorizo)

Fonte: Blog do Eduardo H. Rizo

Share.

About Author

Bacharel em Ciência da Computação pela FIPP/Unoeste, Pós-Graduado em Desenvolvimento de Sistemas Web, Segurança da Informação e Avaliação do Ensino e da Aprendizagem, Professor universitário e responsável pelo setor de desenvolvimento de sistemas web da Universidade do Oeste Paulista. MCP e MCPS pela Microsoft e nas horas vagas dedica um pouco do seu tempo escrevendo posts técnicos sobre desenvolvimento de sistemas web, windows phone, gerenciamento de servidores e outros assuntos para a comunidade.

  • julio

    ccomo compartilhar mandar meus videos pelo bluetom para outro aparelho so comsigo mandar fotos lumia 925

  • Alan

    Gostaria de Saber se é Possivel criar um App, Onde eu Desbloqueio a Tela e Automaticamente ele tira uma Foto e salva na galeria ??
    e Também se existe alguma forma de criar um App de Radio FM que Grava. Obrigado Aguardo a Resposta = D

    • Felipe

      Seria uma foto com a câmera mesmo? Se for, acho que é plenamente possível, contanto que você deixe o aplicativo em primeiro plano, antes de bloquear o seu smartphone (você poderia criar um “timer” para tirar fotos automaticamente e incluir a mesma instrução durante o carregamento do aplicativo). Caso o smartphone seja desbloqueado pouco tempo após ser bloqueado, ele continuará na memória, e o timer é que irá tirar a foto. No caso do smartphone ficar muito tempo bloqueado, é normal o aplicativo ser fechado e recarregado ao desbloquear. Neste caso, a instrução para tirar a foto ao carregar já solucionaria o seu problema.

      Caso seja screenshot, daria, mas só do aplicativo (já que a tela de bloqueio não faz parte da execução do aplicativo, e o mesmo não terá acesso).

      O segundo caso, acredito que seja possível (já que há aplicativos que até gravam conversas). Mas, teria que pesquisar as bibliotecas internas e ver se há algo pronto, ou se você terá que apelar para ferramentas de terceiros.

      • Alan

        Interessante, Pesquisei aqui, Só consegui até agora um App de Radio Cru, gostaria de achar algum codigo que gravasse mais estou pesquisando a respeito. no Caso da Foto, a Minha ideia era Criar um App de Segurança, Igual aqueles que tem no Android / IOS, onde se caso toda hora que você desbloquear o Aparelho ia Tirar uma Foto tanto na Frontal, quanto na Traseira. o Interessante mesmo seria Ativação Remota, se caso você perde o Smart, entra no Site e manda tirar uma Foto, mas dai complica um pouco caso Não tenha Internet, mas Seria uma das Funções. Apesar que Uma vez que você perde, Não teria com o Recuperar mesmo.

        • Felipe

          Recuperar sempre é difícil (para não dizer impossível). Mas ao menos hoje temos a opção de “banir” o modelo roubado usando o IMEI. Acho que se todos fizessem isso, a revenda de modelos roubados diminuiria bastante.

          Agora, o mais eficaz em caso de roubo (fora usar o IMEI junto a operadora) é ativar o recurso “localizar meu telefone” (encontrado dentro das configurações).

          Ele permite que você toque, bloqueie, apague ou localize o seu telefone (via mapa), pelo site do Windows Phone. Como é nativo, não poderá ser desativado. Agora, ele também não chega a garantir muita coisa, ainda mais se o Edge/3G/4G der mancada… xD

  • mateus

    Windows phone 7.8 é um lixo nao tem instagram nao tira print o facebook no navegador é porcaria

  • mateus

    Queria tira screenshot no meu lumia 710

  • Luiz Fernando Gomes de Castro

    Existe ou nao screenshoot nativo no WP7.x??????

    • Felipe

      Não oficialmente.

      Há ROMs customizadas que contam com esse recurso (você pode encontrar na XDA Developers, porém, não é compatível com todos os modelos).

      Ou, caso você seja um desenvolvedor, poderá instalar o aplicativo Screen Capturer no seu modelo desbloqueado (terá que instalar o arquivo XAP, que também pode ser encontrado na XDA Developers, pelo Application Deployment, presente na SDK do Windows Phone).

      Ele consegue tirar screenshots de quase tudo, exceto jogos e filmes aparentemente. Elas são salvas no formato JPG, então, infelizmente a qualidade está longe de ser perfeita. Mas é um bom quebra-galho para gerar as screenshots dos aplicativos sem a necessidade de se utilizar o emulador.

      • Luiz Fernando Gomes de Castro

        E como eu, reles mortal e ignorante de tudo faço isso?

        Será que dava pra fazer um passo a passo???

        Valeu!

        • Felipe

          Um passo a passo? É complicado, ainda mais se você mesmo se considera leigo.

          Fora que, varia de modelo para modelo, e nem todos podem ser modificados “por enquanto”.

          Aparentemente, todos os Lumia 800 lançados por aqui possuem o boot loader travado. E infelizmente isso impede que se possa usar uma ROM customizada nele.

          Por outro lado, é possível instalar o Screen Capturer, caso você seja um desenvolvedor Windows Phone, e possua uma conta de desenvolvimento ativa.

          Já o Lumia 710 possui uma maior liberdade. Mas não cheguei a pesquisar se todos podem ser destravados.

          Caso seja o seu modelo, você pode dar uma lida nesse tópico:

          http://forum.xda-developers.com/showthread.php?t=2102114

          Na XDA Developers há seções para todos os modelos. Você pode dar uma lida nos tópicos e ver se encontra o seu modelo (caso não seja nenhum dos dois citados).

          Mas lembrando, é melhor não arriscar tanto apenas para ter esse recurso. Mesmo que os outros sejam bastante tentadores, o risco, principalmente para leigos, é alto demais.

  • Hian Carvalho

    O simples Windows + Bloquear é muito complexo, puta merda.

    • Felipe

      Esse recurso (screenshot nativo) não está presente no WP7.

      Fora que ele pode ser usado para diversas outras situações, como a geração de imagens personalizadas ou gravação de imagens geradas por outros controles (caso o usuário queira fazer um bloco de notas ou um “Paint”).

      O único porém é que ele não captura os controles como o WebBrowser, que não fazem parte do Silverlight.