Skip to content

Commit

Permalink
Estrutura das postagens criada
Browse files Browse the repository at this point in the history
  • Loading branch information
SamilaRuane committed Nov 21, 2017
1 parent abec2d4 commit 16b6775
Show file tree
Hide file tree
Showing 24 changed files with 900 additions and 33 deletions.
17 changes: 14 additions & 3 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,11 @@
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".ui.main.MainActivity"></activity>
<activity android:name=".ui.main.MapActivity"></activity>
<activity android:name=".ui.main.MainActivity" />
<activity
android:name=".ui.main.MapActivity"
android:screenOrientation="landscape"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen" />

<meta-data
android:name="com.google.android.gms.version"
Expand Down Expand Up @@ -50,7 +53,15 @@
<data android:scheme="@string/fb_login_protocol_scheme" />
</intent-filter>
</activity>
<activity android:name=".ui.login.SignUpActivity"></activity>
<activity android:name=".ui.login.SignUpActivity" />
<activity android:name=".ui.main.CamActivity">
<intent-filter>
<action android:name="android.media.action.IMAGE_CAPTURE" />

<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity android:name=".ui.post.PostActivity"></activity>
</application>

</manifest>
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package br.ufs.projetos.gocidade.repository

import br.ufs.projetos.gocidade.repository.model.AppDbHelper
import br.ufs.projetos.gocidade.repository.model.Post
import com.facebook.CallbackManager
import rx.Observable

Expand All @@ -9,6 +11,7 @@ import rx.Observable
class AppDataManager : DataManager {

val mApiHelper = AppApiHelper ()
val mDbHelper = AppDbHelper ()

override fun signInWithFacebook(callbackManager: CallbackManager, listener : DataManager.DataResult) {
mApiHelper.signInWithFacebook(callbackManager, listener)
Expand All @@ -26,5 +29,7 @@ class AppDataManager : DataManager {
return mApiHelper.isSigned()
}


override fun newPost(post : Post) {
mDbHelper.newPost(post)
}
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
package br.ufs.projetos.gocidade.repository

import br.ufs.projetos.gocidade.repository.model.DbHelper

/**
* Created by samila on 14/11/17.
*/
interface DataManager : ApiHelper{
interface DataManager : ApiHelper, DbHelper{
interface DataResult {
fun onResult (b : Boolean, s : String)
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package br.ufs.projetos.gocidade.repository.model

import br.ufs.projetos.gocidade.util.Constants
import com.google.firebase.database.DatabaseReference
import com.google.firebase.database.FirebaseDatabase

/**
* Created by samila on 21/11/17.
*/
class AppDbHelper : DbHelper {

val database = FirebaseDatabase.getInstance()
val dbReference : DatabaseReference? = database.reference

override fun newPost(post : Post) {
dbReference?.child(Constants.DataBase.DATABASE_POST)
?.child(post.id.toString())?.setValue(post)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package br.ufs.projetos.gocidade.repository.model

/**
* Created by samila on 21/11/17.
*/
interface DbHelper {

fun newPost (post : Post)
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@ import com.google.android.gms.maps.model.LatLng
/**
* Created by samila on 19/11/17.
*/
data class Post (val id : Int, val uriFoto : String, val category : OccurrenceCategory, val location : LatLng )
data class Post (val id : Long, val uriFoto : String, val category : OccurrenceCategory, val location : LatLng, val comment : String )
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ class LoginPresenter : LoginContract.Presenter {
override fun onResult(b: Boolean, s: String) {
if (b){
mView.onSuccess(s)
mView.redirectTo(MapActivity :: class.java)
mView.redirectTo(MainActivity :: class.java)
}else{
mView.onError(s)
}
Expand All @@ -69,7 +69,7 @@ class LoginPresenter : LoginContract.Presenter {

override fun isSigned() {
if (mDataManager.isSigned()){
mView.redirectTo(MapActivity :: class.java)
mView.redirectTo(MainActivity :: class.java)
}
}
}
204 changes: 204 additions & 0 deletions app/src/main/java/br/ufs/projetos/gocidade/ui/main/CamActivity.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,204 @@
package br.ufs.projetos.gocidade.ui.main;

import android.content.Intent;
import android.content.pm.PackageManager;
import android.hardware.Camera;
import android.media.CamcorderProfile;
import android.media.MediaRecorder;
import android.net.Uri;
import android.provider.MediaStore;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.FrameLayout;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

import br.ufs.projetos.gocidade.R;

public class CamActivity extends AppCompatActivity
implements View.OnClickListener {

private Camera mCamera;
private CamView mPreview;
private MediaRecorder mMediaRecorder;
private boolean mGravando;
private boolean mTirouFoto;
private Button mBtnCapturar;
private File mCaminhoArquivo;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_cam);

if (cameraDisponivel()) {
abrirCamera();

mPreview = new CamView(this, mCamera);
FrameLayout preview = (FrameLayout) findViewById(R.id.previewCamera);
preview.addView(mPreview);
}

Uri uri = getIntent().getParcelableExtra(MediaStore.EXTRA_OUTPUT);
if (uri != null){
mCaminhoArquivo = new File(uri.getPath());
}

mBtnCapturar = (Button) findViewById(R.id.btnCapturar);
mBtnCapturar.setOnClickListener(this);
}

@Override
protected void onPause() {
super.onPause();
liberarMediaRecorder();
liberarCamera();
if (mGravando){
if (mCaminhoArquivo.exists()){
mCaminhoArquivo.delete();
}
}
}

@Override
protected void onResume() {
super.onResume();
if (cameraDisponivel()) {
abrirCamera();
}
}

@Override
public void onClick(View view) {
String action = getIntent().getAction();
if (action.equals(MediaStore.ACTION_IMAGE_CAPTURE)){
tirarFoto();
} else if (action.equals(MediaStore.ACTION_VIDEO_CAPTURE)){
gravarVideo();
}
}
// Próximos métodos virão aqui
private boolean cameraDisponivel() {
return getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA);
}

private void abrirCamera() {
try {
mCamera = Camera.open();
} catch (Exception e){
e.printStackTrace();
}
}

private void liberarMediaRecorder(){
if (mMediaRecorder != null) {
mMediaRecorder.reset();
mMediaRecorder.release();
mMediaRecorder = null;
mCamera.lock();
}
}

private void liberarCamera(){
if (mCamera != null){
mCamera.release();
mCamera = null;
mPreview.getHolder().removeCallback(mPreview);
}
}

private void tirarFoto(){
if (mTirouFoto){
setResult(RESULT_OK);
finish();
} else {
mCamera.takePicture(null, null, mPicture);
}
}

private Camera.PictureCallback mPicture = new Camera.PictureCallback() {
@Override
public void onPictureTaken(byte[] data, Camera camera) {

if (mCaminhoArquivo != null){
try {
FileOutputStream fos = new FileOutputStream(mCaminhoArquivo);
fos.write(data);
fos.close();
mTirouFoto = true;
mBtnCapturar.setText("OK");
} catch (IOException e) {
e.printStackTrace();
}
}
}
};

private void gravarVideo(){
if (mGravando) {
concluirGravacao();

} else {
if (prepararGravacao()) {
mMediaRecorder.start();
mBtnCapturar.setText("Stop");
mGravando = true;
} else {
liberarMediaRecorder();
}
}
}

private boolean prepararGravacao(){

abrirCamera();
mCamera.unlock();

mMediaRecorder = new MediaRecorder();
mMediaRecorder.setCamera(mCamera);

mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);

mMediaRecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH));

mMediaRecorder.setOutputFile(mCaminhoArquivo.toString());
mMediaRecorder.setMaxDuration(60000); // 1 minuto
mMediaRecorder.setOnInfoListener(new MediaRecorder.OnInfoListener() {
@Override
public void onInfo(MediaRecorder mr, int what, int extra) {
if (what == MediaRecorder.MEDIA_RECORDER_INFO_MAX_DURATION_REACHED) {
concluirGravacao();
}
}
});

mMediaRecorder.setPreviewDisplay(mPreview.getHolder().getSurface());

try {
mMediaRecorder.prepare();
} catch (IOException e) {
e.printStackTrace();
liberarMediaRecorder();
return false;
}
return true;
}

private void concluirGravacao(){
mMediaRecorder.stop();
liberarMediaRecorder();
mCamera.lock();

mGravando = false;

Intent it = new Intent();
it.setData(Uri.fromFile(mCaminhoArquivo));
setResult(RESULT_OK, it);
finish();
}
}
Loading

0 comments on commit 16b6775

Please sign in to comment.