Android 6.0 Marshmallow, nowości, trzy zgrzyty + dwa fixy. Multiwindow, a także density.

Premiera finalnego wydania Androida Marshmallow już za nami, emocje opadły, dla porządku wrzucę główne nowości:

– nowa kontrola uprawnień (np można zainstalować facebooka i zabronić mu przeglądania kontaktów), a nie tak jak kiedyś, jeśli instalujesz aplikację, zgadzasz się na wszystko
– doze, czyli lepsze zarządzanie baterią, tzn telefon uczy się kiedy go nie używasz i w tym czasie nie zbiera powiadomień, znacznie ogranicza ruch w sieci i w ten sposób oszczędza baterię
– kopie zapasowe ustawień, w tym momencie więcej rzeczy jest przechowywanych na serwerze Google, wystarczy tylko zalogować się do aplikacji i dane się synchronizują.
– lepsza edycja tekstu, z poziomu zaznaczenia możliwość włączenia np. tłumacza
– natywne wsparcie czytnika linii papilarnych

I w sumie..tyle. Zaraz, zaraz, czegoś tutaj brakuje:
W wersjach developerskich mieliśmy przecież multiwindow. A do tego był zapowiedziany Now on tap. Z rzeczy które mnie jeszcze osobiście denerwują jest density na poziomie 480. Wszystkie elementy designu są olbrzymie.

Co z Now on tap? Niestety, nie dostępne w naszym kraju. Szkoda, funkcja naprawdę fajna, natychmiastowe wyszukiwanie danych w zależności od kontekstu ekranu. Np, pytam żony, czy może pójdzie na pizzę, ona pyta gdzie, a ja przytrzymuję klawisz home i już wiem, gdzie są najbliżej zjem pizzę. Szkoda, niestety musimy poczekać.

Co z density? Cóż jest pewien sposób na zmianę, który działa zawsze, ale jest niestabilny (kiedyś go opiszę). Pozostaje edycja pliku build.prop.

A co z multiwindow? Otóż udało mi się znaleźć sposób, opisuje jak tego dokonać (oczywiście, nie biorę odpowiedzialności za ewentualne uszkodzenia itp, etc…).

Aby zacząć w komputerze muszą znajdować się sterowniki do fastboot, komputer musi być podłączony przez usb. Sposób nie wymaga roota.

1. Instalujemy Androida 6.0, (testowałem ten sposób na Nexusie 5)
2. Uruchamiamy telefon w trybie bootloader (POWER+VOL DOWN lub fastboot reboot-bootloader)
3. Instalujemy custom recovery, konkretnie TWRP, podaję link do TWRP dla Nexusa 5
3.1 Ważne, aby zaraz po zainstalowaniu, wybrać z menu Bootloadera opcję recovery, inaczej Google usunie nam naszego customowego i wrzuci swojego zaraz przy pierwszym uruchomieniu
3.2 Uwaga, po zakończeniu wszystkich operacji, po wychodzeniu z recovery twrp pyta się, czy zrootować telefon, cóż w wersji twrp-2.8.7.1 ta opcja powoduje bootloop (sprawdzone empirycznie)
4. W menu recovery wybieramy Mounts i klikamy na System
5. Jeśli nie odpalona to odpalamy konsolę, np klikając Shift+PPM i wybierając opcję: „otwórz okno polecenia tutaj”
6. W wierszu polecenia wywołujemy:
adb pull /system/build.prop
7. To polecenie skopiuje nam z telefonu do miejsca gdzie otwarliśmy konsolę plik build.prop, nie zamykamy konsoli
8. Edytujemy plik build.prop jak tekst (osobiście używam i polecam Notepad++)
9. Znajdujemy takie linie:
ro.sf.lcd_density=480
ro.build.type=user
10. Edycja pierwszej z nich pozwala na zmianę density (moja ulubiona wartość to 400)
11. Edycja drugiej z user na userdebug spowoduje, że w opcjach programistycznych, po włączeniu urządzenia pojawi się coś takiego (zwróćcie uwagę na inny kształt menu, tak się prezentuje density 400):


12. Zapisujemy plik
13. W konsoli wywołujemy po kolei:
adb push build.prop /system/
adb shell
cd system
chmod 644 build.prop
14. Uruchamiamy urządzenie normalnie
15. Po włączeniu w opcjach programistycznych cieszymy się multiwindow!

Należy pamiętać, że multiwindow jest w dalszym ciągu opcją rozwojową, w związku z tym mogą zdarzać się problemy (czytałem, że czasem battery drain).

Po tych poprawkach jest już trochę lepiej, nie mniej dalej brakuje motywów, czy możliwości edycji ikon na pasku. Cóż, czekamy na dalszy rozwój 😉

Pozdrawiam!

Notepad++ czyli narzędzie oszczędzające cenny czas

Dostałem nie tak dawno w pracy zadanie, polegające na wyciągnięciu kilkunastu, kilkudziesięciu zdań z pliku xml. Plik miał jakieś wartości przed zdaniem, miał jakieś wartości po zdaniu, miałem wyciągać tylko te zdania, w których linii występowało <UserTask>. Mogłem oczywiście napisać odpowiedni parser, co zajęło by nie wiem, jakąś pewnie godzinę. Tylko tak naprawdę po co, skoro mamy idealne narzędzie do tego typu przekształceń tekstowych. Oto opis jak wykonywać tego typu zadania:

Skrótem klawiszowym ctrl+h otwieramy zaawansowane narzędzie zamieniania, w którym zaznaczamy wyrażenia regularne.
Dokumentacja wyrażeń regularnych znajduje się tutaj:
Notepad++ regular expressions
A tak wygląda polecenie zamiany wszystkich linii nie zawierających danego tekstu
(?!^.*usertask.*$)^.+
Zamieniamy oczywiście na pusty tekst. W miejsce usertask wpisujemy tekst, który jest kluczem do linii, które mają zostać nieruszone.
Polecenie zamiany wszystkiego przed danym tekstem, w każdej linii:
.*text
Zamieniamy również na pusty tekst.
Polecenie zamiany wszystkiego za danym tekstem, w każdej linii:
[text].*
Tutaj również na pusty tekst. Text to słowo klucz.

Okej mamy już wszystkie zdania, ale każde w nowej linii, niejednokrotnie z kilkoma liniami przerwy, a chcielibyśmy je po przecinku. Oto, jak to się robi:
Edycja/Operacje na liniach/Usuwanie pustych linii.
Teraz wystarczy zamienić znak nowej linii na przecinek. W tym celu zaznaczamy rozszerzony, zamiast wyrażenia regularne i wykonujemy taką operację:
rn
Zamieniamy na przecinek, albo to, czego potrzebujemy. I już, zadanie rozwiązane.
Teraz, do każdego pliku xml mamy takie 5 operacji.

Można szybciej 😉
Przed rozpoczęciem tych wszystkich operacji klikamy: Makra/Rozpocznij nagrywanie.
Wykonujemy wszystkie kroki.
Po zakończeniu klikamy: Makra/Zakończ nagrywanie.
Dla następnego pliku wystarczy już tylko Makra/Odtwórz
Zadanie rozwiązane.

Opowiem teraz dwa słowa o wyrażeniu rn. Tak naprawdę oznacza ono przejście do nowej linii, najprościej mówiąc enter. Symbol r to z angielskiego carriage return, i pochodzi jeszcze z czasów, kiedy zamiast ekranów były drukarki. Symbol ten oznaczał przejście na wysokość pierwszego znaku od lewej strony w drukarce, czyli do początku linii. Z kolei symbol n, czyli new line, to po prostu zejście poziom niżej. Jeżeli spotkalibyście się z określeniem CRLF to oznacza ono to samo. Nie wszystkie systemy jednak używają tego standardu, czasem wystarcza sam CR, czasem sam LF.

To tyle ciekawostek na dziś, mam nadzieję, że przydatny lifehack o notepadzie++! 😉

Pozdrawiam!