Nie jesteś zalogowany/zarejestrowany na tej stronie. Prosimy zaloguj się lub zarejestruj. Aby się zarejestrować kliknij tutaj...


Ta strona korzysta z plików cookiesKorzystając z naszej strony internetowej wyrażasz zgodę na wykorzystanie przez nas plików cookies w celu zapewnienia Ci wygody podczas jej przeglądania.
Rozumiem. Nie pokazuj w przyszłości.
Panel użytkownika
     

Nie masz konta? Zarejestruj
Zapomniałeś hasła? Przypomnij

Forum Tizen OS!
Utwórz nowy temat Odpowiedz w temacie  [ Posty: 2
bada Anatomia "Hello World" - wstęp do programowania
1
Przyjaciel
Avatar użytkownika
Dołączył(a): 2010-06-18, 23:11
Online: 57d 23h 13m
Posty: 1925
Lokalizacja: Polska?
Podziękowań: 230
Podziękował: 12
Model: Wave&WaveM
Srebrny Puchar za osiągnięcia użytkownika Support: Srebrna gwiazda dla osób zaangażowanych w tworzenie forum. bada-os.info: Administrator oraz redaktor bloga bada-os.info
Napisane: 2012-05-21, 20:45 
Link:
Autor: wit
Źródło: www.badadev.com/anatomy-of-hello-world-the-bada-way/
Tłumaczenie na podstawie Google Translatora, więc z góry przepraszam za błędy.


Każde środowisko potrzebuje aplikacji "Hello World!", która ma zobrazować jego działanie. Nie inaczej jest w wypadku platformy bada.

Pierwszą rzeczą jaką musisz znać jest język programistyczny C++. Podany tu przykładowy kod został opracowany w Visual Studio 2005 i kreatorze bada, a przetestowany został w symulatorze bada.
Stworzone zostaną następujące pliki:
    * HelloWorld.h
    * HelloWorld.cpp
    * HelloWorldEntry.cpp

Istnieją również dwa pliki XML, które będą potrzebne do projektu o nazwie application.xml i manifest.xml, ale o nich nie będziemy mówić.

Na początek zajmiemy się główną klasą aplikacji. Zacznijmy od jej nagłówka

HelloWorld.h
Link:
#ifndef __HELLOWORLD_H__
#define __HELLOWORLD_H__

#include <FBase.h>
#include <FGraphics.h>;
#include <FLocales.h>
#include <FSystem.h>
#include <FApp.h>

using namespace Osp::Base;
using namespace Osp::Graphics;
using namespace Osp::Locales;
using namespace Osp::System;
using namespace Osp::App;

class HelloWorld :
   public Application // must inherit from Application class
{
public:
   // The application must have a factory method that creates an instance of the application.
   static Application* CreateInstance(void);

public:
   HelloWorld();
   ~HelloWorld();

public:
   // The application must provide its name.
   String GetAppName(void) const;

protected:
   // The application must provide its ID.
   AppId GetAppId(void) const;

   AppSecret GetAppSecret(void) const;

public:
   // This method is called when the application is initializing.
   bool OnAppInitializing(AppRegistry& appRegistry);

   // This method is called when the application is terminating.
   bool OnAppTerminating(AppRegistry& appRegistry);

   // Thie method is called when the application is brought to the foreground
   void OnForeground(void);

   // This method is called when the application is sent to the background.
   void OnBackground(void);

   // This method is called when the application has little available memory.
   void OnLowMemory(void);

   // This method is called when the device's battery level changes.
   void OnBatteryLevelChanged(BatteryLevel batteryLevel);
};

#endif


Większość rzeczy w tym pliku nagłówkowym powinny być zrozumiałe, zwłaszcza dla tych z nas, którzy pracują często z C++. Jest kilka rzeczy, na które warto zwrócić uwagę:
    # Base - podstawowe funkcje i interfejs (w szczególności poszczególnych typów danych)
    # Graphics – pozwala "rysować" na ekranie (pamiętaj, że to zwykły rysunek na niskim poziomie działaĂą - funkcje User Interface są w innym pakiecie o nazwie Osp:: UI)
    # Locales – funkcje związane z kulturą /informacjami (np. za prawidłowe daty, waluty i formaty liczb)
    # System – podstawowe interakcje systemu (np. alarmy, poziom baterii itp.)
    # App – pozwala na zarządzanie własną aplikację i jej ustawieniami, a także zakładania i wprowadzenia innych aplikacji

Klasa aplikacji musi dziedziczyć z klasy Application zdefiniowaną w Osp:: nazwę aplikacji. Ten zakłada również, że twoja klasa musi implementować niektóre funkcje, takie jak:
    # Statyczna funkcja, która zwraca instancje klasy aplikacji
    # Konstruktor i destruktor funkcji
    # Informacje o niektórych podstawowych funkcjach, które zwracają nazwy, id lub tajny kod swojego app
    # Niektóre obowiązkowe obsługi zdarzeĂą, które są wywoływane na ważne wydarzenia, takie jak zmiany poziomu baterii.

Jest to minimalny szkielet każdej aplikacji, który można rozwijać.

HelloWorld.cpp
Link:
#include "HelloWorld1.h"

HelloWorld1::HelloWorld()
{
}

HelloWorld1::~HelloWorld()
{
}

Application*
HelloWorld::CreateInstance(void)
{
   // You can create the instance through another constructor.
   return new HelloWorld();
}

String
HelloWorld::GetAppName(void) const
{
   static String appName(L"HelloWorld");
   return appName;
}

AppId
HelloWorld::GetAppId(void) const
{
   static AppId appId(L"93bt1p123e");
   return appId;
}

AppSecret
HelloWorld::GetAppSecret(void) const
{
   static AppSecret appSecret(L"9C645DDBA19C71BAD1204DA4DAA7A0B9");
   return appSecret;
}

bool
HelloWorld::OnAppInitializing(AppRegistry& appRegistry)
{
   // TODO:
   // Initialization including UI construction can be done here.
   // Load the application's latest data, if necessary.
   // If this method is successful, return true; otherwise, return false.
   return true;
}

bool
HelloWorld::OnAppTerminating(AppRegistry& appRegistry)
{
   // TODO:
   // Deallocate or close any resources still alive.
   // Save the application's current states, if applicable.
   // If this method is successful, return true; otherwise, return false.
   return true;
}

void
HelloWorld::OnForeground(void)
{
   result r = E_SUCCESS;

   Canvas* pCanvas = GetAppFrame()->GetCanvasN();
   if(pCanvas == null)
      return;

   Font* pFont = new Font();
   pFont->Construct(FONT_STYLE_PLAIN | FONT_STYLE_BOLD, 50);
   pCanvas->SetFont(*pFont);

   r = pCanvas->DrawText(Point(30, 30), GetAppName());
   if (IsFailed(r))
   {
      AppLog("pCanvas->DrawText() failed.\n");
      delete pCanvas;
      return;
   }

   r = pCanvas->Show();
   if (IsFailed(r))
   {
      AppLog("pCanvas->Show() failed.\n");
      delete pCanvas;
      return;
   }

   delete pCanvas;

}

void
HelloWorld::OnBackground(void)
{
}

void
HelloWorld::OnLowMemory(void)
{
   // TODO:
   // Deallocate as many resources as possible.
}

void
HelloWorld::OnBatteryLevelChanged(BatteryLevel batteryLevel)
{
   // TODO:
   // It is recommended that the application save its data,
   // and terminate itself if the application consumes much battery
}


Nie trzeba tu chyba nic wyjaśniać. Wreszcie punkt wejścia do aplikacji (np. main (...)). Odbywa się to w oddzielnym pliku:

HelloWorldEntry.cpp
Link:
/**
* OSP Application entry point(OspMain) introduced.
*/
#include <fapp.h>
#include "HelloWorld.h"

using namespace Osp::Base::Collection;

extern "C"
{
   __declspec(dllexport) void OspMain(int hInstance, int argc, char *argv[]);
}

/**
* Entry function of OSP Application which is called by the operating system.
*/
extern "C" {
void OspMain(int hInstance, int argc, char *argv[])
{
   AppLog("OspMain() Started. \n");

   result r = E_SUCCESS;

   ArrayList* pArgs = new ArrayList();
   pArgs->Construct();
   for (int i = 0; i < argc; i++)
   {
      String* pEachArg = new String(argv[i]);
      pArgs->Add(*pEachArg);
   }

   r = Osp::App::Application::Execute(HelloWorld::CreateInstance, pArgs);
   if (IsFailed(r))
   {
      AppLog("Application execution has failed.\n");
   }

   if (pArgs)
   {
      pArgs->RemoveAll(true);
      delete pArgs;
   }

   AppLog("OspMain() Ended. \n");
}
}


OspMain (), która jest głównym punktem wejścia w bada OS, "jest widoczne" dzięki __declspec(dllexport) . Drugą ciekawą sprawą są argumenty przekazania do programu. Podejrzewam, że można przekazać pewne dane tutaj, jeśli uruchomiona aplikacja w innym app. argumenty te są przechowywane w ArrayList, jednym z typów danych w bada, określonym w Osp:: namespace Base.



Zobacz profil Gadu-Gadu


bada Anatomia "Hello World" - wstęp do programowania
2
Przyjaciel
Avatar użytkownika
Dołączył(a): 2010-08-08, 10:05
Online: 24d 6h 35m
Posty: 448
Podziękowań: 51
Podziękował: 63
Model: wave s8500
Firmware: bada 2.0
Operator: play
2 miejsce: 2 Miejsce w Wakacyjnym Konkursie Fotograficznym Bada Dev: Developer aplikacji dla systemu bada Dobroczyńca: Odznaczenie za pomoc dla Forum (2)
Napisane: 2012-06-22, 09:49 
Przyznam się szczerze że gość strasznie namieszał i skomplikował sprawę. Prościej jest używać dedykowanego środowiska Eclipse. Do tego zbagatelizował plik manifest.xml, który jest bardzo ważnym plikiem do działania aplikacji. Do tego dodaje pliki nagłówkowe, z których nie korzysta.

_________________
Obrazek Kropka TV - program telewizyjny na system Android


Zobacz profil


Utwórz nowy temat Odpowiedz w temacie  [ Posty: 2
Wyświetl posty nie starsze niż:  Sortuj wg  


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


Nie możesz rozpoczynać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
cron
Powered by phpBB © 2011 phpBB Group
Copyright © 2011 bada-WORLD.pl Wszelkie prawa zastrzeżone.
Kopiowanie lub rozpowszechnianie jakiejkolwiek części serwisu (grafiki czy tekstów) bez zgody właściciela jest całkowicie zabronione.
Nasi partnerzy: TizenOs.com.pl | gsmManiaK.pl | Smitebuild.pl | PaladinsDecks.pl
phpBB SEO
| Forum o systemie Tizen Forum TizenOs.com.pl
smite wymagania | smite download