Archive for category Android

Przywrócenie przycisku wywołującego listę aplikacji w Androidzie

Niedawno zainstalowałem nową wersję Andorida 2.2 jak zwykle po takim kroku należy system skonfigurować. Postanowiłem dostosować pasek pozwalający m.in. na wyświetlenie listy aplikacji i dodać do niego możliwość wywołania innej aplikacji. Jest to dosyć proste, wystarczy wybrany skrót do aplikacji przytrzymać chwilę palcem a następnie przesunąć na wybraną pozycje paska. Niestety, jak to czasem bywa, palec się omsknął i aplikacji wylądował w miejscu przycisku pozwalającego na wyświetlanie listy zainstalowanych aplikacji:

Ikona Gmaila na pasku

Ikona Gmaila na pasku

I pojawił się problem: jak przywrócić odpowiedni przycisk. Na szczęście problem nie jest trudny do rozwiązania, i sprowadza się utworzenia odpowiedniego skrótu a następnie umieszczenie go ponownie na dawnym miejscu.

Instrukcja w kilku krokach:

  1. Należy przytrzymać palec na pustej części ekranu, aż wyświetli się menu pozwalająca na dodanie na pulpit nowej aplikacji i wybrać opcję Custom shortcut:
    Custom shortcut

    Custom shortcut

  2. Pojawi się okienko, które pozwoli na definicję skrótu, należy wybrać przycisk Pick your activity
  3. Z nowej listy wybrać pozycję Launcher Actions:
    Pick your activity

    Pick your activity

  4. Teraz czas na wybranie odpowiedniego przycisku: Open/close App Drawer:
    Launcher actions

    Launcher actions

  5. Zatwierdzenie i utworzenie skrótu:
    Zdefiniowany skrót

    Zdefiniowany skrót

  6. Teraz pozostaje tylko przeciągną nowo utworzony skrót na swoje miejsce na pasku:
    Odzyskane menu

    Odzyskane menu

Źródła

Tags: ,

W jaki sposób zrobić zrzut ekranu w telefonie z Androidem (zrootowanym)

W przypadku telefonów z Androidem istnieje uniwersalna możliwość robienia zrzutów ekranów przy użyciu trybu debug oraz SDK systemu operacyjnego (więcej na ten temat w tym wpisie: W jaki sposób zrobić zrzut ekranu w telefonie z Androidem). Jeżeli natomiast posiadamy dostęp do użytkownika root na telefonie, to dostępne są jeszcze inne sposoby ich tworzenia.

Aplikacje te pozwalają przede wszystkim zrobić zrzut ekranu bez potrzeby podłączania telefonu do komputera. Poniższe aplikacje mogą zostać zainstalowane z marketu aplikacji.

ShootMe

Pierwszą aplikacją jest ShootMe. Można ją zainstalować z marketu aplikacji. Aplikację po zainstalowaniu należy uruchomić (oraz w przydzielić uprawnienia użytkownika root).

ShootMe - uruchomienie aplikacji

ShootMe - instrukcja obsługi

ShootMe - instrukcja obsługi

Aplikacja po uruchomieniu praktycznie znika, nie udostępnia żadnego interfejsu użytkownika.

W przypadku ShootMe zrobienie zrzutu ekranu polega na potrząśnięciu telefonu, trwającym powyżej 0,5 sekundy. W przypadku wykrycia wstrząsu, aplikacja robi zrzut ekranu i zapisuje go w katalogu /sdcard/ShootMe (czyli na karcie SD w katalogu ShootMe).

Mój problem z tą aplikacją polega na tym, że tylko raz udało mi się uzyskać zrzut ekranu, a trząsłem telefonem na różne sposoby ;) .

Można zmienić sposób aktywacji robienia zrzutu ekranu z potrząsania telefonem na okrzyk. Aby przełączyć aplikację w ten tryb, należy podczas uruchamiania aplikacji nacisnąć klawisz Menu i wybrać właściwą opcję konfiguracyjną. Od tej poru krzyk trwający powyżej 0,5 sekundy powinien spowodować zrobienie screenshoota (ale w moim przypadku ta wersja też nie działała).

ShootMe - zmiana trybu pracy

ShootMe - zmiana trybu pracy

ShootMe - aktywacja krzykiem

ShootMe - aktywacja krzykiem

PickMe

Aplikacja PickMe umożliwia kontrolowanie robienia zrzutów ekranu z poziomu komputera sterującego. Działa w podstawowej wersji podobnie do rozwiązania dostępnego przy użyciu SDK Androida, ale pozwala na połączenie się z telefonem przy użyciu sieci bezprzewodowej.

PickMe po uruchomieniu wyświetli informację, na jakim adresie IP i porcie będzie nasłuchiwał na połączenie z przeglądarki:

PickMe - adres IP i port

PickMe - adres IP i port

Połączenie z podanym adresem wyświetli na od razu zrzut ekranu:

PickMe - połączenie przez przeglądarkę

PickMe - połączenie przez przeglądarkę

Każde ponowne wczytanie strony spowoduje zrobienie aktualnego zrzutu ekrany.

PickMe udostępnia także możliwość podglądu w czasie rzeczywistym co dzieje się na ekranie telefonu. Włączenie tej funkcji jest proste, wystarczy wybrać link Live w przeglądarce. Od tego momentu będziemy na bieżąco widzieli co się dzieje na telefonie.

screenshot

Ostatnią aplikacją w tym zestawieniu jest screenshot. Aplikacja ta działa w dwóch trybach:

  • zrobienie zrzutu ekranu po zadanym czasie (od 2 do 40 sekund)
  • zrobienie zrzutu ekranu po potrząśnięciu telefonu

Utworzone pliki graficzne są zapisywane na karcie SD w katalogu /sdcard/screenshots.

screenshot - konfiguracja

Podsumowanie

Ja najczęściej korzystam z aplikacji PickMe oraz screenshot. Spełniają one swoje zadanie, ale mają jedną wadę (zwłaszcza PickMe): bardzo obciążają telefon (przynajmniej G1), do tego stopnia, że czasem nie daje się z niego korzystać… Nawet zamknięcie tych aplikacji nie pomaga, jedynie restart telefonu przywraca poprawne działanie telefonu.

Źródła

Tags: , , , , ,

Instalacja aplikacji na karcie SD w systemie Android

Telefon G1 ma niestety niewielką ilość pamięci dostępnej do instalacji aplikacji. Już po zainstalowaniu kilku większych pojawia się problem z brakiem pamięci RAM. Niestety, standardowo w systemie Android nie ma możliwości instalacji aplikacji na karcie SD (o ci aż się prosi). Dopiero wersja 2.2 może to zmienić, istnieje możliwość przeniesienie czy tez instalacji na karcie aplikacji obsługujących to.

Na szczęście system operacyjny Android jest systemem otwartym, istnieje kilka jego modyfikacji, które rozszerzają jego podstawowe możliwości. I tak, jeżeli dysponujemy:

  • system operacyjny pochodzący od CyanogenMod, w moim przypadku jest to Android w wersji 2.1 (CyanogenMod 5.0.8)
  • dostęp do użytkownika root
  • karta SD

Krok 1: Partycjonowanie karty SD

Zanim zaczniemy instalować aplikacje na karcie, należy najpierw utworzyć dla nich miejsce. Można to zrobić tworząc partycję typu EXT na karcie.

UWAGA:

Partycjonowanie karty spowoduje utratę wszystkich danych jakie są na niej zapisane. Także warto zrobić wcześniej jej kopię bezpieczeństwa.

Partycjonowanie karty odbywa się w trybie [cic]Recovery[/cci]. Można do nie go wejść, jeżeli uruchamiamy telefon trzymając naciśnięty klawisz Home. Po takim uruchomieniu powinno ukazać się menu, i jedną z pozycji będzie Partition sdcard.

Tryb Recovery - wybór partycjonowania karty

Tryb Recovery - wybór partycjonowania karty

Po wyborze pozycji partycjonowania, pojawią się kolejne pozycje, z których należy wybrać Partition SD:

Partycjonowanie karty

Partycjonowanie karty

W tym momencie będziemy musieli zdefiniować podział karty na partycję. Pierwszą definiowaną partycją będzie SWAP, należy podać jej wielkość (przy użyciu kulki). Następnie należy zdefiniować partycję typu EXT2, na niej będą trzymane instalowane aplikacje. Pozostała część karty zostanie przeznaczona na system plików VFAT i będzie używana jak standardowa karta SD.

Definicja partycji na karcie

Definicja partycji na karcie

Po utworzeniu partycji można jeszcze zmienić typa partycji z EXT2 na EXT4. Należy powrócić do menu Partition sdcard. Następnie najpierw wybrać pozycję SD:ext2 to ext3, a następnie SD:ext3 to ext4.

Teraz pozostaje już tylko uruchomić telefon.

Krok 2: Instalacja aplikacji na karcie

W przypadku korzystania z modu CyanogenMod nowa partycja EXT zostanie wykryta automatycznie i zamontowana w katalogu /sd-ext. Nie ma potrzeby dokonywania żadnych dodatkowych kroków związanych z montowaniem tego udziału dyskowego. W przypadku oryginalnego systemu Andorid (lub też pewnie innych modów) trzeba jeszcze zamontować w odpowiedni sposób tę partycję, aby dało się z niej uruchamiać aplikacje. Więcej informacji można znaleźć w artykułach do których linki znajdują się na końcu tego wpisu.

Po utworzeniu partycji na karcie SD i uruchomieniu telefonu pozostaje teraz włączyć jej obsługą przez system operacyjny. Można to zrobić uruchamiając Ustawienia->Aplikacje i zaznaczając opcję Apps2SD (opcja ta jest charakterystyczna dla CyanogenMod). Od tego momentu wszystkie nowo instalowane aplikacje będą zapisywane na karcie SD.

Opcja konfiguracyjna App2SD

Opcja konfiguracyjna App2SD

Istnieje także możliwość przeniesienia już zainstalowanych aplikacji na kartę SD. Można to zrobić poprzez wybranie Ustawienia->Aplikacje->Zarządzaj aplikacjami. Teraz należy wybrać aplikację, która ma zostać przeniesiona na kartę. Zostaną wyświetlone podstawowe informacje o aplikacji (m.in. miejsce instalacji i rozmiar). Powinien tam także znaleźć się przycisk Move. Wybranie go spowoduje przeniesienie aplikacji na kartę SD.

Przeniesienie aplikacji na kartę SD

Przeniesienie aplikacji na kartę SD

Nie zauważyłem żadnych różnic w pracy z aplikacjami zapisanymi na karcie SD, działają i zachowują się dokładnie tak jak w momencie instalacji w pamięci telefonu. Ale teraz mam już dożo więcej miejsca na instalację nowych aplikacji :) .

Źródła

Tags: , , , , ,

Udostępnienie połączenia internetowego z Andorida poprzez port USB

Udostępnianie połączenia internetowego przy użyciu sieci wi-fi, które opisałem we wpisie Udostępnienie połączenia internetowego z Andorida poprzez sieć bezprzewodową ma w moim przypadku kilka wad:

  • pobiera tyle energii, że telefon podłączony do komputera przy użyciu kabla USB raczej się rozładowuje niż ładuje
  • w moim przypadku połączenie to także rozgrzewało telefon do 50 stopni, co prawdopodobnie powodowało, że czasem się po prostu wyłączał

Jeżeli posiadamy zrootowany telefon z zainstalowanym Cyanogenmod w wersji 5 (może wcześniejsze wersje też to obsługują, ja testowałem w tej) to istnieje możliwość udostępnienia połączenia internetowego poprzez kabel USB.

Konfiguracja telefonu

W telefonie należy właściwie zrobić tylko jedną rzecz, włączyć udostępnienia połączenia poprzez USB. A można to zrobić wybierając Ustawienia, następnie Sieci zwykłe i bezprzewodowe, a na końcu zaznaczyć opcję Internet Tethering.

I to właściwie tyle.

Konfiguracja komputera

W moim przypadku konfiguracja dotyczy systemu Ubuntu 10.4. Postaram się pokazać, jak należy ten system skonfigurować, aby automatycznie nawiązywał połączenie z telefonem i konfigurował odpowiednio połączenie sieciowe.

Wymogiem poprawnego działania tego połączenie jest obeność w jądrze modułu RNDIS, odpowiedzialnego za zestawienie połączenie sieciowego po łączu USB. W przypadku Ubuntu odpowiednie jądro zostało juz skompilowane z odpowiednimi modułami.

Po podłączeniu telefonu warto wydać polecenie:

# ip a s usb0

Jeżeli polecenie to wyświetli informacje o interfejsie usb0 to oznacza, że połączenie działa, pozostaje je tylko skonfigurować.

A konfiguracja polega tak naprawdę na pobraniu adres IP z serwera DHCP. Można zrobić w następująco:

# dhclient usb0

Komenda ta powinna pobrać dynamiczny adres IP, po jej wydaniu warto sprawdzić, czy możemy połączyć się z jakimiś zasobami.

I tak naprawdę to wszystko, po tych operacjach powinno działać połączenie z Internetem.

Automatyczna konfiguracja połączenia z telefonem

Konfiguracja automatycznej konfiguracji internfejsu usb0 jest stosunkowo prosta. Należy w pliku /etc/network/interfaces dopisać dwie linijki:

1
2
auto usb0
iface usb0 inet dhcp

Pierwsza linijka oznacza automatyczne konfigurowanie wybranego interfejsu sieciowego, a druga informuje, że należy pobrać informacje o sieci IP pobrać z serwera DHCP.

Pozstaje jeszcze tylko zrestartować sieć:

# /etc/init.d/networking restart

Od tej pory po podłączeniu telefonu sieć USB powinna automatycznie zostać skonfigurowana.

Źródła

Tags: , ,

Udostępnienie połączenia internetowego z Andorida poprzez sieć bezprzewodową

W przypadku telefonów z systemem Android pojawia się pewien problem, jeżeli chcemy użyć go do udostępnienia połączenia z Internetem. Większość „normalnych” telefonów dysponuje wbudowanym modemem z którym można się połączyć z poziomu komputera i nawiązać odpowiednio połączenie. Niestety, nie jest tak w przypadku Androida. Tutaj trzeba korzystać z innych rozwiązań, które pozwalają na udostępnienie już nawiązanego połączenia z siecią.

Z grubsza sposoby można podzielić na wymagające uprzywilejowanego dostępu do telefonu i takie które go nie wymagają. O drugim sposobie więcej można przeczytać w tym artykule: Dostęp do Internetu za pomocą HTC G1 z systemem Android (Proxoid).

Jeżeli natomiast dysponujemy zrootowanym telefonem, otwiera się kilka kolejnych możliwości udostępnienia Internetu poprze telefon. Najciekawsza z nich (wg mnie) to połączenie w przy użyciu sieci bezprzewodowej. Uniezależni ona nas od gniazda USB (chociaż przy dłuższym korzystaniu z takiego połączenia i tak jakoś trzeba rozwiązać problem zasilania telefonu) i jednocześnie pozwala korzystanie z różnych usług sieciowych (np. protokołu SSH).

Konfiguracja telefonu

Konfiguracja telefonu jest stosunkowo prosta, ale trzeba pamiętać, że należy dysponować uprawnieniami użytkownika root. Wersja systemu Android musi być większa niż 1.5. Mój telefon miał zainstalowaną wersję 2.1.

Pierwszym krokiem będzie zainstalowanie aplikacji Wireless Thether for Root Users, można ją znaleźć w markecie aplikacji:

Andorid Market - Wireless Thether

Andorid Market - Wireless Thether

Po instalacji można przejść do szybkiej konfiguracji. W moim przypadku postanowiłem użyć połączenia szyfrowanego przy użyciu 128 bitowego algorytmu WEP. Po uruchomieniu aplikacji należy wcisnąć klawisz Menu i wybrać pozycję Setup.

Włączenie szyfrowania WEP odbywa się poprzez zaznaczenie opcji konfiguracyjnej Enable WiFi-Encryption. Włącza ona 128 bitową wersję algorytmu WEP.

Wireless Thether - Włączenie szyfrowania WEP

Wireless Thether - Włączenie szyfrowania WEP

Kolejnym krokiem będzie ustawienie odpowiedniego hasła korzystając z opcji Change Passphrase. Standardowo jest ustawione poniższe hasło, które oczywiście należy zmienić. Należy pamiętać, że musi ono posiadać dokładnie 13 znaków (ani mniej, ani więcej).

Wireless Thether - Zmiana hasła

Wireless Thether - Zmiana hasła

Teraz kolej jeszcze na dwie opcje: konfiguracja nazwy sieci (pozycja Change SSID) oraz kanał, na którym będzie pracować nasza sieć (Change Channel). Ich zmiana nie jest obowiązkowa, ale na jednym obszarze nie powinny znaleźć się dwie sieci o takiej samej nazwie oraz pracujące na tym samym kanale. Wartości te także będę potrzebne podczas konfiguracji komputera, więc należy je przynajmniej zapamiętać, ale najlepiej ustawić na własne.

Wireless Thether - Zmiana SSID

Wireless Thether - Zmiana SSID

Wireless Thether - Zmiana kanału

Wireless Thether - Zmiana kanału

Ostatnim krokiem będzie konfiguracja zakresu adresów IP, które będę przydzielane komputerom łączącym się z telefonem (nie jest to także konieczne, ale czasem trzeba te wartości zmienić na inne, jeżeli kolidują z jaką inną siecią działającą na naszych maszynach):

Wireless Thether - Zmiana kanału

Wireless Thether - Zmiana kanału

Teraz nie pozostaje nic innego jak tylko włączyć sieć bezprzewodową i przystąpić konfiguracji komputera. Aplikację uruchamiamy poprzez naciśniecie zielonego symbolu sieci wifi:

Wireless Thether - Włączenie sieci wifi

Wireless Thether - Włączenie sieci wifi

Podczas uruchamiania sieci zostaniemy zapytania, czy aplikacja może uzyskać uprawnienie super-użytkownika (czyli użytkownika root). Należy wyrazić na to zgodę, w przeciwnym wypadku sieć nie zostanie uruchomiona.

Konfiguracja komputera

Konfiguracja komputera jest prosta. Jeżeli korzystamy np. z narzędzia WiCd lub Network Manager wystarczy wybrać zdefiniowaną sieć, podać klucz do sieci WEP i powinno wszystko działać.

Jest jednak przynajmniej jeden problem z użyciem tych narzędzie: karty Intela identyfikujące się w taki sposób Network controller: Intel Corporation PRO/Wireless 4965 AG or AGN [Kedron] Network Connection (rev 61) nie działają tak pięknie i prosto (a ja należę to tych „szczęśliwców is traciłem kilka godzin próbując uzyskać połączenie).

Problem objawia się tym, że nie można pobrać adresu IP przy użyciu serwera DHCP (ustawienie adresu na statyczny nie rozwiązuje problemu). Więcej o tym błędzie można znaleźć na tym zgłoszeniu o błędzie Bug 1689 – iwl3945, ad-hoc mode not working. Błąd powinien już zostać usunięty, więc pewnie w przypadku nowszych wersji jądra wszystko będzie działać.

Istnieje pewne obejście problemów z tą kartą, polega ono na konfiguracji interfejsu sieciowego w określonej kolejności i można to zrobić przy użyciu standardowych narzędzi dostępnych w systemie. Poniżej znajduje się, który wykonuje odpowiednie czynności, pwostał on na podstawie skryptu zaprezentowanego w tym artykule: How-To: Intel Wireless 4965 AGN with Ad-Hoc network + WEP. Oryginalny skrypt ma jednak wg mnie przynajmniej dwie wady:

  • próbuje usunąć moduły jądra, które w mojej wersji nie istnieją (prawdopodobnie w jakieś wcześniejszej wersji jądra miało to sens)
  • skrypt jest napisany w Pythonie, a jedynym jego celem jest wywoływanie odpowiednich poleceń, wg mnie dużo lepszym rozwiązaniem będzie tutaj prosty skrypt napisany w bashu

Moja wersja nazwa się android_network i wygląda następująco:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#!/bin/bash


INTERFACE="wlan0"
ESSID="siec"
KEY="abcdefghijklm"
CHANNEL=2
RATE="auto"
SLEEP=2

INIT_NETWORK_SCRIPT='/etc/init.d/wicd'

if [ $1 == "start" ]; then

        echo "Wyłączam zarządzanie siecią bezprzewodową"
        $INIT_NETWORK_SCRIPT stop

        echo "Wyłączam interfejs sieciowy $INTERFACE"
        ifconfig $INTERFACE down
        sleep $SLEEP

        echo "Pierwsza próba połączenia"
        iwconfig $INTERFACE essid $ESSID channel $CHANNEL mode ad-hoc key s:$KEY rate $RATE
        sleep $SLEEP


        ifconfig $INTERFACE up
        sleep $SLEEP

        echo "Druga próba połączenia"
        iwconfig $INTERFACE essid $ESSID channel $CHANNEL mode ad-hoc key s:$KEY rate $RATE
        sleep $SLEEP

        echo "Pobieram adres DHCP"
        dhclient $INTERFACE

        exit $?
fi

if [ $1 == "stop" ]; then

        echo "Zwalniam adres DHCP"
        dhclient -r $INTERFACE

        echo "Wyłączam intefejs sieciowy $INTERFACE"
        ifconfig $INTERFACE down

        echo "Uruchamiam zarządzanie siecią bezprzewodową"
        $INIT_NETWORK_SCRIPT start

        exit $?
fi

Włączenie odbywa się poprzez wydanie polecenia

# android_network start

Wyłączenie sieci poprzez polecenie

# android_network stop

Skrypt ten można umieścić np. w katalogu /usr/local/bin i nadać mu atrybut 700.

Przed pierwszym uruchomieniem należy jeszcze skonfigurować odpowiednie zmienne:

  • INTERFACE – interfejs sieci bezprzewodowej, który będzie konfigurowany
  • ESSID – nazwa sieci udostępnianej przez telefon
  • KEY – hasło do sieci WEP
  • CHANNEL – kanał, który jest wykorzystywany do komunikacji
  • RATE – prędkość transmisji
  • SLEEP – czas, jaki należy odczekać pomiędzy wywołaniami poszczególnych poleceń, w przedziale od 2 do 10 sekund
  • INIT_NETWORK_SCRIPT – skrypt, który wyłączy aplikacje zarządzające siecią bezprzewodową, w moim przypadku WiCd

W moim przypadku uruchomienie tego skryptu zaowocowało połączeniem się z siecią WEP udostępnianą przez telefon.

Źródła

Tags: , ,