Форум программистов, компьютерный форум CyberForum.ru

Сфотографировать, обрезать, получить миниатюру и записать фото в память телефона - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Текст не умещается в выпадающий список (spinner dropdown) http://www.cyberforum.ru/android-dev/thread1204139.html
Имеется очень длинный текст, который даже на андроиде с большим экраном, в выпадающем списке не умещается. См. код: ArrayList<String> tempList=new ArrayList<String>(); tempList.add("Это очень длинный текст!"); ArrayAdapter<String> adapterTemp=new ArrayAdapter<String>(getActivity(), R.layout.spinner_item, tempList); adapterTemp.setDropDownViewResource(R.layout.spinner_dropdown_item); Как...
Программирование Android Не работает HttpClient Первый раз пробую отправить и получить данные на сервер... Полазил в нете и накопал такую функцию... но когда в эмуляторе запускаю и вызываю функцию postData то выкидывает с приложения с ошибками Вот код.. public class MainActivity extends Activity { public EditText login; public EditText pass; public TextView result; private ProgressDialog dialog; private InputStream... http://www.cyberforum.ru/android-dev/thread1203989.html
Программирование Android 2 tabhost в один активити
как это сделать ? как я не кручу у меня при tabHost.addTab(tabSpec); выводит нул поинт экзепшен :(( <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="horizontal" > <LinearLayout android:id="@+id/Listcarlayout"
Программирование Android Изменение background layout 'а сторонней Activity
При нажатии на кнопку должен меняться background некоторых layout'ов, которые находятся в других Activity. public class SettingsActivity extends Activity { RelativeLayout settingsAct, writeAct, listAct, calendarAct, dialogAct; Button button1,button2,button3; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
Программирование Android не загружаются данные http://www.cyberforum.ru/android-dev/thread1203449.html
В общем, есть несколько баз данных, в каждой по одной таблице(id и имя), и есть несколько листвью. При закрытии активити данные из лист вью загружаются в в бд. При возврате в активити данные из бд должны загружаться назад в во все листвью. В первые 4 загружаются, а 2 последних нет, делаю все по аналогии, 100 раз все перепроверил, но все равно не грузит, может есть какой-то лимит на количество...
Программирование Android Упрощенная регистрация Видел в некоторых играх к примеру clash of clans используется упрощенная регистрация новых игроков, интересно как это делается? Возможно регистрируется на основе Android Device ID... или как-то еще но ведь это не безопасно без каптчи и пр. Или есть какой-то хитрый способ серверной проверки Device ID? подробнее

Показать сообщение отдельно
lost_in_code
0 / 0 / 0
Регистрация: 23.02.2014
Сообщений: 6

Сфотографировать, обрезать, получить миниатюру и записать фото в память телефона - Программирование Android

10.06.2014, 23:03. Просмотров 1223. Ответов 0
Метки (Все метки)

Здравствуйте ув. форумчане, просьба помочь начинающему
Стоит задание:
1. Сделать фото по нажатию на кнопку.
2. Обрезать
3. Получить миниатюру фото и вывести в ImageView.
4. Записать обрезанное, полноразмерное фото в память телефона (или на карту, пока не важно).

Воспользовался методом http://developer.alexanderklimov.ru/...hotocamera.php и по этим http://code.tutsplus.com/tutorials/c...--mobile-11458
по сути почти одно и то же.

Стоит проблема в следующем:
1. Когда делаю таким способом:
Java
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
private void getThumbailPicture() {
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        startActivityForResult(intent, TAKE_PICTURE);
    }
    
    public void onClick(View v) {
        if (v.getId() == R.id.capture_btn) {
            getThumbailPicture();
            }
        }
    
    private void saveFullImage() {
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        File file = new File(Environment.getExternalStorageDirectory(),
                "test.jpg");
        outputFileUri = Uri.fromFile(file);
        intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
        startActivityForResult(intent, TAKE_PICTURE);
    }
    
    @Override
    protected void onActivityResult(int requestCode,
            int resultCode, Intent data) {
        if (requestCode == TAKE_PICTURE) {
            Uri imageUri = null;
            // Check if the result includes a thumbnail Bitmap
            if (data != null) {
                if (data.hasExtra("data")) {
                    Bitmap thumbnail = data.getParcelableExtra("data");
                    ImageView image = (ImageView) findViewById(R.id.picture);
                    image.setImageBitmap(thumbnail);
                    saveFullImage();
                    // TODO Какие-то действия с миниатюрой
                }
            }
        else {
            
            // TODO Какие-то действия с полноценным изображением,
            // сохраненным по адресу outputFileUri
        }
        }
    }
то соответственно:
1. Запускается функция получения снимка, сначала для миниатюры (без обрезки).
2. Потом для полноразмерного фото.
3. Потом производиться запись снимка для полноразмерного фото в память телефона.
4. Возвращаемся на наш активити и получаем миниатюру (без обрезки) в ImageView.
5. Полноразмерное фото появляется в галерее.


Как сделать чтобы это было одно и то же фото? Получить снимок, обрезать, на активити передать миниатюру а на карту сохранить полноразмерное ?
+ реализовать обрезку, нужно как-то правильно передать адрес снимка в функцию crop();

Теперь второй способ:
2.
Java
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
53
54
public void onClick(View v) {
        try {
            // Намерение для запуска камеры
            Intent captureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            startActivityForResult(captureIntent, CAMERA_CAPTURE);
        } catch (ActivityNotFoundException e) {
            // Выводим сообщение об ошибке
            String errorMessage = "Ваше устройство не поддерживает съемку";
            Toast toast = Toast
                    .makeText(this, errorMessage, Toast.LENGTH_SHORT);
            toast.show();
        }
    }
 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (resultCode == RESULT_OK) {
            // Вернулись от приложения Камера
            if (requestCode == CAMERA_CAPTURE) {
                // Получим Uri снимка
                picUri = data.getData();
                // кадрируем его
                performCrop();
            }
            // Вернулись из операции кадрирования
            else if(requestCode == PIC_CROP){
                Bundle extras = data.getExtras();
                // Получим кадрированное изображение
                Bitmap thePic = extras.getParcelable("data");
                // передаём его в ImageView
                ImageView picView = (ImageView)findViewById(R.id.picture);
                picView.setImageBitmap(thePic);
            }
        }
    }
    
    private void performCrop(){
        try {
            // Намерение для кадрирования. Не все устройства поддерживают его
            Intent cropIntent = new Intent("com.android.camera.action.CROP");
            cropIntent.setDataAndType(picUri, "image/*");
            cropIntent.putExtra("crop", "true");
            cropIntent.putExtra("aspectX", 1);
            cropIntent.putExtra("aspectY", 1);
            cropIntent.putExtra("outputX", 256);
            cropIntent.putExtra("outputY", 256);
            cropIntent.putExtra("return-data", true);
            startActivityForResult(cropIntent, PIC_CROP);
        }
        catch(ActivityNotFoundException anfe){
            String errorMessage = "Извините, но ваше устройство не поддерживает кадрирование";
            Toast toast = Toast.makeText(this, errorMessage, Toast.LENGTH_SHORT);
            toast.show();
        }
    }
этот способ работает так:
1. Получаем фото с камеры.
2. Сразу предлагает обрезать но лезет в галерею андроида для выбора снимка, но только что сделанного снимка там нет!
3. Если выбрал любое изображение с галереи и обрезал то миниатюра отобразиться в ImageView.
4. Фото никуда не записывается.

По сути проблему решит второй способ, но нужно как-то передать ему на обработку только что сделанный снимок с камеры?
+ организовать запись фото в память.
+ добавление фото в галерею андроида.

Жду советов как соловей лета

Добавлено через 12 часов 53 минуты
Извините, проблему решил, за основу было взято первый способ реализации.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru