Projeto novo: PhySwitch
Quinta-feira passada comecei o desenvolvimento de um projeto chamado PhySwitch. Achei que seria uma boa ideia ter uma forma rápida de trocar entre vários aplicativos abertos no iPhone. Usar o touchscreen é uma boa ideia, mas ainda acho meio… digamos… lento.
A minha ideia surgiu quando olhei para os botões de volume. Por que não usá-los como uma forma rápida e prática de mudar de aplicativo no iOS? Então eu comecei a desenvolver essa solução.
Ontem a noite tinha um protótipo razoavelmente funcional. Passei o dia inteiro hoje fora de casa e aproveitei para ir testando a minha solução e anotando os seus bugs. Cheguei em casa hoje e consertei tudo e agora parece que já tenho uma versão funcional.
Gravei esse vídeo para demonstrar para vocês como ficou:
O PhySwitch já foi enviado para a Cydia Store e custará US$1.99. Peço que não o pirateiem. A única forma de remunerar o meu trabalho (que não foi pouco, diga-se :P) é simplesmente comprando o tweak legalmente. Além disso, você terá acesso a futuras atualizações, com novas features e implementações :)
Bom, o objetivo desse post é explicar, basicamente, como funciona o PhySwitch. Como todo tweak, ele modifica uma função do sistema. Para ativar a tela em que os aplicativos abertos são mostrados, eu usei o LibActivator, ou seja, nas Settings do iPhone, você pode escolher como o PhySwitch será aberto. Existem umas 20 possibilidades, como apertar os dois botões de volume ao mesmo tempo ou segurar o botão home por 3 segundos.
Quando se está dentro da tela de seleção de aplicativo, apertando o botão de volume o aplicativo selecionado mudará para o de cima (ou o de baixo) com uma transição. Vendo o vídeo acima fica mais fácil de entender.
A ação do botão de volume é modificada somente dentro da tela de seleção de aplicativo do PhySwitch. Fora dela, o volume funciona normalmente, ou seja, nada mudará na sua utilização padrão do iOS. Você só ganhará uma feature (que é muito prática, por sinal).
[geek mode on] Essa modificação da ação padrão do botão de volume é feita hackeando um callback interno do SpringBoard. Assim que o callback é chamado, mandamos uma IPC (Inter-Process Communication) para um outro processo, que roda em um nível mais alto do sistema, notificando-o de que o botão de volume foi pressionado. A partir daí, o processo rodando em um nível mais alto decide a ação a ser tomada (animar o deslizamento da tela para cima ou para baixo, etc), de acordo com a circunstância em que o mesmo é chamado. [geek mode off]
A tela em que aparecem os aplicativos abertos é jogada em cima do SpringBoard com um hack bem simples. Para fechá-la, basta apertar o botão Home ou executar a mesma ação configurada com o LibActivator para abrí-la.
Esse é o básico do projeto, e é o que eu posso revelar enquanto ele ainda não está disponível na Cydia Store. O PhySwitch deve estar disponível na Cydia Store amanhã a noite, então fiquem ligados (eu também anunciarei no meu Twitter).
No futuro, pretendo lançar atualizações do PhySwitch com novas features, visando sempre tornar a experiência do usuário a melhor possível. Além disso, dêem sugestões, elas serão sempre muito bem vindas.
Qualquer dúvida, os comentários estão aí! :)