diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/CardAdapter.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/CardAdapter.java index 1fa0df9..a2dd942 100644 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/CardAdapter.java +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/CardAdapter.java @@ -9,6 +9,7 @@ import android.view.View; import android.view.ViewGroup; import com.example.ninefourone.nutritionmaster.R; +import com.example.ninefourone.nutritionmaster.bean.DailyCard; import com.orhanobut.logger.Logger; import java.util.ArrayList; @@ -19,19 +20,10 @@ import java.util.ArrayList; public class CardAdapter extends RecyclerView.Adapter { private Context context; - private ArrayList mList; - private int[] picList = new int[]{ - R.drawable.monday, - R.drawable.tuesday, - R.drawable.wednesday, - R.drawable.thursday, - R.drawable.friday, - R.drawable.saturday, - R.drawable.sunday - }; + private ArrayList mList; - public CardAdapter(Context context, ArrayList mList) { + public CardAdapter(Context context, ArrayList mList) { this.context = context; this.mList = mList; } @@ -47,7 +39,7 @@ public class CardAdapter extends RecyclerView.Adapter { @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) @Override public void onBindViewHolder(CardHolder holder, int position) { - holder.bindView(picList[position], mList.get(position), context); + holder.bindView(mList.get(position).getPictureId(), mList.get(position).getTitle(), context); } @Override diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/CardHolder.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/CardHolder.java index 990322a..43d40d0 100644 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/CardHolder.java +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/CardHolder.java @@ -37,6 +37,7 @@ public class CardHolder extends RecyclerView.ViewHolder { public void bindView(int picId, String text, Context context) { tvName.setText(text); ivPhoto.setImageDrawable(context.getDrawable(picId)); + } diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/DailyCard.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/DailyCard.java new file mode 100644 index 0000000..b689b43 --- /dev/null +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/DailyCard.java @@ -0,0 +1,44 @@ +package com.example.ninefourone.nutritionmaster.bean; + +/** + * Created by ScorpioMiku on 2018/9/3. + */ + +public class DailyCard { + /*** + * 每日卡片bean类 + */ + private String title; + private String description; + private int pictureId; + + public DailyCard(String title, String description, int pictureId) { + this.title = title; + this.description = description; + this.pictureId = pictureId; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getPictureId() { + return pictureId; + } + + public void setPictureId(int pictureId) { + this.pictureId = pictureId; + } +} diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/camera/FoodMaterialCamera.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/camera/FoodMaterialCamera.java index 8746c79..2477de1 100644 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/camera/FoodMaterialCamera.java +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/camera/FoodMaterialCamera.java @@ -1,11 +1,13 @@ package com.example.ninefourone.nutritionmaster.camera; +import android.app.Activity; import android.content.Context; import android.content.pm.PackageManager; import android.hardware.Camera; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; +import android.view.Surface; import android.view.View; import android.view.Window; import android.view.WindowManager; @@ -38,6 +40,7 @@ public class FoodMaterialCamera extends AppCompatActivity { private Camera mCamera; private CameraPreview mPreview; + private int mCameraId = Camera.CameraInfo.CAMERA_FACING_BACK; @Override @@ -58,6 +61,8 @@ public class FoodMaterialCamera extends AppCompatActivity { } else { openCamera(); } + + setCameraDisplayOrientation(this, mCameraId, mCamera); } /** @@ -153,4 +158,40 @@ public class FoodMaterialCamera extends AppCompatActivity { break; } } + + //将相机设置成竖屏 + public static void setCameraDisplayOrientation(Activity activity, int cameraId, Camera camera) { + + int degrees = 0; + + //可以获得摄像头信息 + Camera.CameraInfo info = new Camera.CameraInfo(); + Camera.getCameraInfo(cameraId, info); + + //获取屏幕旋转方向 + int rotation = activity.getWindowManager().getDefaultDisplay().getRotation(); + + switch (rotation) { + case Surface.ROTATION_0: + degrees = 0; + break; + case Surface.ROTATION_90: + degrees = 90; + break; + case Surface.ROTATION_180: + degrees = 180; + break; + case Surface.ROTATION_270: + degrees = 270; + break; + } + int result; + if (info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) { + result = (info.orientation + degrees) % 360; + result = (360 - result) % 360; + } else { + result = (info.orientation - degrees + 360) % 360; + } + camera.setDisplayOrientation(result); + } } diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/MainActivity.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/MainActivity.java index 4d1d520..e9501a1 100644 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/MainActivity.java +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/MainActivity.java @@ -1,8 +1,10 @@ package com.example.ninefourone.nutritionmaster.modules; import android.annotation.SuppressLint; +import android.content.Intent; import android.os.Build; import android.os.Bundle; +import android.support.annotation.NonNull; import android.support.annotation.RequiresApi; import android.support.v7.widget.Toolbar; import android.view.LayoutInflater; @@ -18,14 +20,17 @@ import com.cb.ratingbar.CBRatingBar; import com.example.ninefourone.nutritionmaster.R; import com.example.ninefourone.nutritionmaster.adapter.HomePagerAdapter; import com.example.ninefourone.nutritionmaster.base.BaseActivity; +import com.example.ninefourone.nutritionmaster.camera.FoodMaterialCamera; import com.example.ninefourone.nutritionmaster.ui.NoScrollViewPager; import com.example.ninefourone.nutritionmaster.utils.MessageUtils; +import com.example.ninefourone.nutritionmaster.utils.PermissionUtils; import com.flyco.tablayout.SlidingTabLayout; import com.github.siyamed.shapeimageview.CircularImageView; import com.miguelcatalan.materialsearchview.MaterialSearchView; import com.mxn.soul.flowingdrawer_core.ElasticDrawer; import com.mxn.soul.flowingdrawer_core.FlowingDrawer; import com.nightonke.boommenu.BoomButtons.HamButton; +import com.nightonke.boommenu.BoomButtons.OnBMClickListener; import com.nightonke.boommenu.BoomMenuButton; import com.orhanobut.logger.Logger; @@ -131,6 +136,7 @@ public class MainActivity extends BaseActivity { ButterKnife.bind(this); Logger.d("oncreate"); setSupportActionBar(toolBar); + askPermission(); } @Override @@ -210,16 +216,33 @@ public class MainActivity extends BaseActivity { * 初始化悬浮按钮 */ private void initBMB() { - HamButton.Builder builder = new HamButton.Builder() .normalImageRes(R.drawable.food_material) - .normalTextRes(R.string.food_meterial_title); + .normalTextRes(R.string.food_meterial_title) + .listener(new OnBMClickListener() { + @Override + public void onBoomButtonClick(int index) { + Intent cameraIntent = new Intent(MainActivity.this, FoodMaterialCamera.class); + startActivity(cameraIntent); + } + }); boomMenuButton.addBuilder(builder); HamButton.Builder builder2 = new HamButton.Builder() .normalImageRes(R.drawable.foods) .normalTextRes(R.string.food_title); boomMenuButton.addBuilder(builder2); - } + /** + * 请求权限 + */ + private void askPermission() { + PermissionUtils.requestCameraPermission(this); + } + + @Override + public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults); + MessageUtils.MakeToast("权限赋予成功"); + } } diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/viewpagerfragments/customization/CustomizationFragment.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/viewpagerfragments/customization/CustomizationFragment.java index 1cdfa06..7844d9a 100644 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/viewpagerfragments/customization/CustomizationFragment.java +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/viewpagerfragments/customization/CustomizationFragment.java @@ -11,6 +11,7 @@ import com.example.ninefourone.nutritionmaster.R; import com.example.ninefourone.nutritionmaster.adapter.CardAdapter; import com.example.ninefourone.nutritionmaster.adapter.CardHolder; import com.example.ninefourone.nutritionmaster.base.BaseFragment; +import com.example.ninefourone.nutritionmaster.bean.DailyCard; import com.example.ninefourone.nutritionmaster.cardconfig.CardConfig; import com.example.ninefourone.nutritionmaster.cardconfig.CardItemTouchCallBack; import com.example.ninefourone.nutritionmaster.cardconfig.SwipeCardLayoutManager; @@ -34,7 +35,18 @@ public class CustomizationFragment extends BaseFragment { private CardAdapter cardAdapter; private CardHolder cardHolder; - private ArrayList mDataList = new ArrayList<>(); + private ArrayList mDataList = new ArrayList<>(); + + private int[] picList = new int[]{ + R.drawable.monday, + R.drawable.tuesday, + R.drawable.wednesday, + R.drawable.thursday, + R.drawable.friday, + R.drawable.saturday, + R.drawable.sunday + }; + @Override public int getLayoutResId() { @@ -70,7 +82,13 @@ public class CustomizationFragment extends BaseFragment { protected void loadData() { super.loadData(); for (int i = 1; i <= 7; i++) { - mDataList.add("周" + ConstantUtils.arab2Chinese(i) + "美食普"); +// mDataList.add("周" + ConstantUtils.arab2Chinese(i) + "美食普"); + DailyCard dailyCard = new DailyCard( + "周" + ConstantUtils.arab2Chinese(i) + "美食普", + "这里放描述", + picList[i - 1] + ); + mDataList.add(dailyCard); } } @@ -90,5 +108,4 @@ public class CustomizationFragment extends BaseFragment { itemTouchHelper.attachToRecyclerView(cardRecyclerView); } - } diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/PermissionUtils.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/PermissionUtils.java index 10c1971..45a0be0 100644 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/PermissionUtils.java +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/PermissionUtils.java @@ -1,19 +1,44 @@ package com.example.ninefourone.nutritionmaster.utils; +import android.Manifest; +import android.app.Activity; import android.content.Context; +import android.content.Intent; +import android.content.pm.PackageManager; +import android.os.Build; +import android.support.v4.app.ActivityCompat; /** * Created by ScorpioMiku on 2018/9/3. */ public class PermissionUtils { + public static final int REQUEST_CAMERA = 1056; /** * 动态获取相机权限 - * @param context - * @param photoFromCamera + * + * @param activity */ - public static void requestCameraPermission(Context context, String photoFromCamera) { + public static void requestCameraPermission(Activity activity) { + if (ActivityCompat.checkSelfPermission(activity, Manifest.permission.CAMERA) + != PackageManager.PERMISSION_GRANTED) { + /** + * 直接请求四个权限 + */ + ActivityCompat.requestPermissions(activity, + new String[]{ + Manifest.permission.CAMERA, + Manifest.permission.READ_EXTERNAL_STORAGE, + Manifest.permission.WRITE_EXTERNAL_STORAGE, + Manifest.permission.READ_PHONE_STATE + }, REQUEST_CAMERA); +// MessageUtils.MakeToast("权限赋予成功"); + } else { + /** + * 否则 + */ + } } } diff --git a/app/src/main/res/drawable/food_material.jpg b/app/src/main/res/drawable/food_material.jpg index 6630a08..af1bc94 100644 Binary files a/app/src/main/res/drawable/food_material.jpg and b/app/src/main/res/drawable/food_material.jpg differ diff --git a/app/src/main/res/drawable/foods.jpg b/app/src/main/res/drawable/foods.jpg index 9d8cb6a..5e7e428 100644 Binary files a/app/src/main/res/drawable/foods.jpg and b/app/src/main/res/drawable/foods.jpg differ