(ESOFT6S)
Ambientes de desenvolvimento (IDEs, linguagens de programação, etc).
Questões de implementação: tamanho da aplicação, fator de forma da tela, compilação para um dispositivo específico ou para dispositivos múltiplos, limitações dos dispositivos.
Programas de desenvolvimento de conteúdo e entretenimento digital para dispositivos móveis.
Bibliotecas de desenvolvimento de programas gráficos para diversas plataformas.
Desenvolvimento de aplicativos multiplataforma.
Aprimorar conceitos relacionados à programação de dispositivos móveis; Desenvolver habilidades de programação para multiplataformas e "internet das coisas"; Criar aplicativos com qualidade e em conformidade com as exigências do mercado digital.
A utilização de dispositivos móveis e a "internet das coisas" são cada vez mais presente, sendo necessário ao aluno que tenha conhecimento nessa área, pois é inteiramente relacionada ao desenvolvimento de sistemas envolvendo a internet.
MEDNIEKS, Zigurd; DORNIN, Laird; MEIKE, G. Blake; NAKAMURA, Masumi; ZANOLLI, Rafael.. Programando o Android - 2. ed. rev. e apm / 2012, São Paulo: Novatec, 2012.
HORSTMANN, Cay S.; CORNELL, Gary.. Core Java [registro eletrônico] - 8. ed. - / 2010, São Paulo: Pearson, 2010.
DEITEL, Paul J.; DEITEL, Harvey M.; DEITEL, Abbey; MORGANO, Michael; TORTELLO, João Eduardo Nóbrega.. Android para programadores: uma abordagem baseada em aplicativos / 2013, Porto Alegre: Bookman, 2013.
A história do telefone móvel, começou em 1973, quando foi efetuada a primeira chamada de um telefone móvel para um telefone fixo. Foi a partir de Abril de 1973 que todas as teorias comprovaram que o celular funcionava perfeitamente, e que a rede de telefonia celular sugerida em 1947 foi projetada de maneira correta.
1
DynaTAC 8000x
1kg 30cm
Anos 80'
2
TDMA, CDMA, GSM
SMS e tela colorida
Anos 90'
3
2G
gravação de video MP3
Anos 00'
4
3G e 4G
Smartphones
Anos 10'
IBM Simon e sua base de carregador (1994)
Menos de cinco anos desde o lançamento da loja de aplicativos da Apple, os aplicativos móveis se tornaram uma das principais maneiras pelas quais as pessoas se comunicam, compram, organizam suas vidas, tocam ou até mesmo trabalham.
1993
IBM lança Simon com tela touchscreen com botoes de calendário, contatos, calculadora e notepad
RIM lança o primeiro BlackBerry
2002
2007
Apple lança
primeiro Iphone
com apps padrão como: camera, mapas e previsão do tempo
Apple lança Iphone 3G com Apple Store
Jul/2008
Out/2008
Google lança HTC Dream
com 1° Android e
Android Market
+1 Bilhão de downloads na Apple Store
2009
Ago/2010
+1 Bilhão de downloads no Android Market
Samsung lança o primeiro tablet Galaxy
Set/2010
http://tectriadebrasil.com.br/wp-content/uploads/2012/11/Aplicativos2.jpg
Jan/2011
+10 Bilhões de downloads na Apple Store
1 Milhão de apps para Smartphones
+10 Bilhões de downloads no Android Market
~94 min em apps
~72 min na web
Dez/2011
Mar/2012
+25 Bilhões de downloads na Apple Store
Google muda de Android Market para Google Play
+50 milhões de downloads do Instagram
Abr/2012
Mai/2012
+1 Bilhão de downloads do Angry Birds
+15 Bilhões de downloads no Google Play
http://tectriadebrasil.com.br/wp-content/uploads/2012/11/Aplicativos2.jpg
2013
+35 Milhões de smartphones vendidos
+54 Milhões de smartphones vendidos
Uber chega no Brasil
2014
2015
+47 Milhões de smartphones vendidos
Twitter inaugura a era da live
+48 Milhões de smartphones vendidos
Pokemon Go é lançado (AR)
2016
2017
+47 Milhões de smartphones vendidos
Facebook atinge +2 Bilhões de usuários
http://especiais.g1.globo.com/economia/tecnologia/a-vida-na-era-dos-apps/
2019
+43 Milhões de smartphones vendidos
Instagram encerra contagem de curtidas
+44 Milhões de smartphones vendidos
Brasil é 2° em horas de videos no smartphone
2018
http://especiais.g1.globo.com/economia/tecnologia/a-vida-na-era-dos-apps/
https://en.wikipedia.org/wiki/Mobile_app_development
O seu Antonio é proprietário de uma fazenda onde ele planta soja e milho. Durante as safras, ele precisa tirar várias duvidas sobre as doenças que possam ser abatidas sobre essas culturas. Para tirar sua duvida ele entra em contato com um engenheiro agrônomo e marca uma visita técnica.
Porém não é sempre que se tem um profissional a sua disposição. E seu Antonio acaba por perder parte da sua safra para doenças que ele poderia ter tratado.
O iFarm é um aplicativo que vai fazer a ponte entre o seu Antonio e um profissional (Eng. Agrônomo).
Dessa forma o Agricultor poderá buscar os serviços de um profissional a sua disposição para tirar suas duvidas sobre sua safra.
https://www.youtube.com/watch?v=vg-INqhKD5c&t=330s
Fundação da plataforma Android é o kernel do linux.
ART confia no kernel do Linux para cobrir funcionalidades como encadeamento e gerenciamento de memória de baixo nível.
O kernel do Linux permite que o Android aproveite os recursos de segurança principais e que os drivers dos fabricantes.
O Android vem com um conjunto de aplicativos principais para envio de SMS, calendários, navegador de internet, contatos etc.
Esses apps não têm status especial entre os aplicativos que o usuário opta por instalar.
Portanto, um aplicativo terceirizado pode se tornar o navegador da Web, o aplicativo de envio de SMS ou até mesmo o teclado padrão do usuário.
Os aplicativos do sistema funcionam como aplicativos para os usuários e fornecem capacidades principais que os desenvolvedores podem acessar pelos próprios aplicativos.
Por exemplo: se o seu aplicativo quiser enviar uma mensagem SMS, não é necessário programar essa funcionalidade — é possível invocar o aplicativo de SMS que já está instalado para enviar uma mensagem ao destinatário que você especificar.
API Level 1 -> Android 1.0
API Level 2 -> Android 1.1
API Level 3 -> Android 1.5 (Cupcake)
API Level 4 -> Android 1.6 (Donut)
API Level 5 -> Android 2.0
API Level 6 -> Android 2.0.1
API Level 7 -> Android 2.1 (Eclair)
API Level 8 -> Android 2.2 (Froyo)
API Level 9 -> Android 2.3 (Gingerbread)
API Level 10 -> Android 2.3.3
Dados coletados durante um período de sete dias encerrado em July 13, 2020.
As versões com menos de 0,1% de distribuição não são exibidas.
Crie experiências de app com tema escuro e navegação por gestos. Ofereça compatibilidade com as novas proteções para privacidade e segurança do usuário. Incremente seus apps com codecs de alto desempenho, melhor biometria, inicialização mais rápida do app, Vulkan 1.1, NNAPI 1.2, dobráveis, 5G e muito mais.
Gradle é um sistema de automação de compilação open source que se baseia nos conceitos de Apache Ant e Apache Maven e introduz uma linguagem de domínio específico baseada em Groovy em vez do XML (Maven) para declarar a configuração do projeto
<TextView
android:id="@+id/helloTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />src/main/res/layout/activity_main.xml
package com.unicesumar.esoft.helloworld
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.TextView
import android.widget.Toast
class MainActivity : AppCompatActivity() {
var helloTextView: TextView? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
helloTextView = findViewById<TextView>(R.id.helloTextView)
helloTextView!!.text = "Olá ESOFT6S"
helloTextView!!.setOnClickListener {
Toast.makeText(applicationContext,
"Bem vindo ao Android com Kotlin",
Toast.LENGTH_LONG).show()
}
}
}src/main/java/com/unicesumar/esoft/helloworld/MainActivity.kt
but before... install AVD
but before... set AVD name and play
public class Calculadora {
public int somar(int a, int b) {
return a+b;
}
}val calc = Calculadora()
val resultado = calc.somar(2,2)
println(resultado)Java
Kotlin
Button bt_login = (Button) findViewById(R.id.bt_login);
bt_login.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick (View v){
efetuarLogin();
}
});bt_login.setOnClickListener{
efetuarLogin()
}Java
Kotlin
String nomeUsuario = null;var nomeUsuario :String = nullJava
Kotlin
var numero:Int = 0
val numero:Int = 0
val lista = listOf(1,2,3,4)
val lista = mutableListOf(1,2,3,4)
Uma intent é entre muitas coisas a forma utilizada para fazer com que
aplicações em processos diferentes se comuniquem, utilizando uma mensagem
que, dependendo de seu conteúdo, pode ser interceptada por qualquer aplicação.
Um banco de dados é visível somente à aplicação que o criou.
implementation "org.jetbrains.anko:anko-sqlite:0.10.4"class MinhaAppDatabase(context: Context) :
ManagedSQLiteOpenHelper(ctx = context,
name = "minhaApp.db", version = 1) { }if (
checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_DENIED &&
checkSelfPermission(Manifest.permission.CAMERA) == PackageManager.PERMISSION_DENIED
) {
// Permission denied
requestPermissions(
arrayOf(Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.CAMERA),
PERMISSION_CODE
);
} else {
// Permission granted
}<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.CAMERA"/>upload de arquivos para sdcard
val file = File(
Environment.getExternalStorageDirectory(),
"/Pictures/capa_single.png"
)
val decodeStream = BitmapFactory.decodeStream(FileInputStream(file))
image_view.setImageBitmap(decodeStream)val uri: Uri = Uri.fromFile(
File(
Environment.getExternalStorageDirectory(),
"/Music/GENERAL_SKY_A_QUESTAO.mp3"
)
)
val mediaPlayer: MediaPlayer? = MediaPlayer().apply {
setAudioStreamType(AudioManager.STREAM_MUSIC)
setDataSource(applicationContext, uri)
prepare()
start()
}val file = File(
Environment.getExternalStorageDirectory(),
"/Movies/Aerial_Shot_Of_City.mp4"
)
video_view.setVideoPath(file.path)
val mediaController = MediaController1(this)
mediaController?.setAnchorView(video_view)
video_view.setMediaController(mediaController)
video_view.start()val intent = Intent(Intent.ACTION_PICK)
intent.type = "image/*"
startActivityForResult(intent, IMAGE_PICK_CODE)
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (resultCode == Activity.RESULT_OK && requestCode == IMAGE_PICK_CODE){
image_view.setImageURI(data?.data)
}
}val intent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
startActivityForResult(intent, CAMERA_CODE)
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (resultCode == Activity.RESULT_OK) {
if (requestCode == CAMERA_CODE) {
val cameraImage: Bitmap = data!!.extras!!.get("data") as Bitmap
image_view.setImageBitmap(cameraImage)
}
}
}Write once, run anywhere!
Um Hybrid Mobile App é como qualquer outro Native Mobile App, que pode ser instalado em dispositivos e publicado em lojas de aplicativos.
Eles podem acessar o hardware do dispositivo, como câmera, acelerômetro, GPS e assim por diante.
A maioria são baseados em HTML5, CSS3 e JavaScript, sendo essas as principais tecnologias. Exceto Xamarin (C#)
Exige um menor custo no desenvolvimento comparado com os nativos
Existem várias plataformas móveis, como iOS, Android, Windows, além de muitas outras novas, o ambiente de desenvolvimento e as linguagens de programação são diferentes para cada um deles.
Se a app precisa precisa estar em todas essas plataformas, será necessário várias equipes e diferentes.
Aplicativos móveis híbridos podem ser desenvolvidos para várias plataformas usando uma única base de código.
No entanto, algum código especializado precisa ser escrito para cada plataforma para aproveitar as APIs nativas para ela.
Baseados em WebView
Cross-compiled Hybrid Apps
"Plataforma cruzada" no sentido de que essa abordagem mapeou chamadas em JS para chamadas que gerenciam a UI nativa para plataformas nativas.
Por exemplo: um componente React Native que renderiza texto em um aplicativo móvel será traduzido em dois componentes separados: [TextView] para Android e [UIView] para iOS.
Portanto, não está compartilhando componentes entre plataformas, mas sim está compartilhando código.
É por isso que se diz que está sendo construindo um aplicativo nativo real.
O código JS é executado e orquestra os controles nativos de UI
Isso significa que o componente de UI nativo deve ser suportado pela implementação dessa abordagem
Se houver muitas personalizações nativas, o projeto envolverá três bases de código separadas:
duas para gerenciar sua IU para Android e iOS
uma base de código compartilhada onde ficará o código do controlador.
Caso do Airbnb:
“Mesmo que o código nos recursos do React Native fosse quase totalmente compartilhado entre as plataformas, apenas uma pequena porcentagem do nosso aplicativo era React Native ... Como resultado, acabamos oferecendo suporte ao código em três plataformas em vez de duas.”
Hybrid-Native são ótimas soluções com uma série de benefícios, suas principais são:
Capacidade de construir uma UI nativa real usando JavaScript
Alto grau de compartilhamento de código.
Se deseja misturar uma solução de "plataforma cruzada" em uma base de código nativa existente, tem habilidades nativas e planeja direcionar apenas para iOS e Android, essa é a melhor opção!
O React Native pode ser definido como:
um framework que consiste em uma série de ferramentas que viabilizam a criação de aplicações mobile nativas para as plataformas iOS e Android utilizando o desenvolvimento front-end (HTML, CSS e JS)
É um projeto desenvolvido pelo Facebook durante em um Hackathon em 2013
Sua primeira aparição pública em janeiro de 2015, no evento React.js Con
Código fonte aberto https://github.com/facebook/react-native/