Lekcje z naprawy Bluetooth w dyktafonie SpeechZap

To jest wpis z serii 1 sukces dziennie.

W tej serii publikuję codziennie jeden sukces, który osiągnąłem poprzedniego dnia. To praktyczna implementacja podejścia z książki Show Your Work!

Codziennie zapisuję swoje postępy w SlowTracker – aplikacji do zapisywania sukcesów. Następnego dnia rano wybieram jeden lub kilka i tworzę z nich krótki post.

Odkryłem błąd w aplikacji SpeechZap: aplikacja zbierała dźwięk jedynie z mikrofonu urządzenia, bez znaczenia, czy połączyłem się z zestawem głośnomówiącym, czy nie. Trochę lipa, skoro ma to być apka dedykowana dla osób będących w ruchu.

Naprawiłem to na Android, ale niestety na iOS to nie zadziałało od kopa. Na szczęście udało mi się i tu znaleźć rozwiązanie, choć wymagało to kilkudziesięciu prób, a nie mam iPhone’a do testów.

Rozwiązanie - dla programistów

Do tej pory korzystałem z wtyczki capacitor-voice-recorder ↗. Próbowałem ją zhakować, żeby samodzielnie dodać kod do nagrywania przez zestaw głośnomówiący, ale to nie działało. Nie wiem czemu, bo nawet prostszy kod działa w innej wtyczce: capacitor-plugin-headset ↗.

Metodą prób i błędów udało mi się znaleźć rozwiązanie dla Android:

// w momencie rozpoczęcia nagrywania
await HeadsetPlugin.toggleBluetoothSco({  
  scoOn: true,  
});

Ale to nie wystarczyło dla iOS. Tam znów metodą prób i błędów (dzięki uprzejmości kolegi, bo ja nie mam jeszcze iPhone’a do testów), udało mi się znaleźć trochę brzydkie, ale działające rozwiązanie:

await HeadsetPlugin.toggleBluetoothSco({  
  scoOn: true,  
});  
setTimeout(() => {  
  HeadsetPlugin.toggleBluetoothSco({  
    scoOn: true,  
  });  
}, 0);

Musiałem jednak zrobić jedną rzecz: dodać kod Swift do uruchomienia tej metody na iOS, bo wtyczkę zaimplementowano jedynie na Android.

Kod znajdziesz tutaj ↗.

Dla przedsiębiorców

Początkowo rozważałem zakup iPhone’a, chociaż nie uśmiecha mi się wydawać teraz na coś, czego potrzebuję jedynie do testów raz w tygodniu. Nie chciałem jednak prosić nikogo o pomoc, bo co to za programista aplikacji mobilnych, co nie ma swojego urządzenia.

Nie chciałem też zderzać się z obawą znajomych o udostępnienie mi urządzenia i zajęcie go na kilka godzin (tyle trwały testy na Android, nie oczekiwałem, że z iOS pójdzie szybciej).

Potem podzwoniłem i okazało się, że kolega ma nieużywany, ale nieco uszkodzony iPhone 7. Po kilku godzinach, gdy dostałem urządzenie do ręki, okazało się, że nie mogę na nim zainstalować aplikacji.

W międzyczasie poszukałem bliżej. Pracownik restauracji w hotelu rodziców miał nowszego iPhone’a i zgodził się udostępnić mi go na testy. A że w tym czasie pracował, to i tak nie potrzebował telefonu. Dał mi nawet swój PIN!

Dzięki temu, że schowałem dumę do kieszeni i poprosiłem go o pomoc, to mogłem porządnie przetestować aplikację i błyskawicznie dostać informację zwrotną (kluczowe!). Nie musiałem polegać na testach znajomych, bo to zdecydowanie zbyt długi proces. (Oprócz zbudowania apki trzeba poczekać kilka godzin na akceptację wersji testowej przez Apple 🤦)

Podsumowanie

SpeechZap ma już nagrywanie przez zestaw głośnomówiący, co było jedną z największych przeszkód technicznych dla aplikacji, która jest dedykowana osobom będącym w ruchu (spacer, samochód, rower) 🚀

Nawiązałem kontakt z innymi, miałem okazję opowiedzieć o swojej aplikacji i bez wydawania pieniędzy pokonać przeszkody. Ta krótka historia to przykład, którego mogę użyć, aby nauczyć zaradności swoje dzieci.

Wydanie pieniędzy jest szybkim sposobem, ale kosztownym 😉

P.S. Okazało się, że kolega miał jeszcze jeden telefon i pożyczył mi go do kolejnych testów. Jak dyktafon zacznie zarabiać, to sobie wreszcie kupię. Pomożesz mi w tym? 😇 Przetestuj na speechzap.com ↗

Dołącz do 500+ subskrybentów i bądź na bieżąco! 🚀

Wszystkie najnowsze posty i projekty, pogrupowane tematycznie i dostarczane bezpośrednio do Twojej skrzynki e-mail w każdy wtorek. Bez spamu, obiecuję! 🙌