увеличить объем памяти, выделяемой приложению

Пробую выводить изображения, снятые камерой, и отображать их в приложении. Когда я беру изображения с низким -разрешением (скажем размером 100кБ ), у меня нет проблем с переключением на растровое отображение, минусы, когда я беру их в высоком разрешении (1,5 МБ ), приложение вылетает с исключением

  Error java.lang.OutOfMemoryError. 

бывает на моем смартфоне (Samsung Galaxy SII, Galaxy SIII )есть на всех полках. Пока я решил вручную, понизив качество и размер фотографий, но, учитывая эволюцию камер с увеличением разрешения, эта проблема, вероятно, будет возникать чаще. Нет ли постоянного решения для увеличения памяти, выделенной моему приложению для Android, без ручного вмешательства в устройство и в код?

Изображения сохраняются в растровом формате

 //image creation
Uri domuri1

ContentValues cv = new ContentValues();
cv.remove("101");
domuri1 = getContentResolver().insert(Media.EXTERNAL_CONTENT _URI, cv);
File domthumb1 = new File(domuri1.toString(), fileName1);

//increment photo apparate
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
intent.putExtra(MediaStore.EXTRA_OUTPUT, domuri1);
startActivityForResult(intent, 100);

//images save
ContentResolver cr = getContentResolver();
bitmap1 = MediaStore.Images.Media.getBitmap(cr, domuri1 );
imageView.setImageBitmap(bitmap1);
-. 121 ---1334716- Обратный вызов центрального диспетчера CoreBluetooth сделал DiscoverPeripheral дважды Я сканирую свое периферийное устройство следующим образом :NSDictionary *scanOptions = [NSDictionary Dictionary DictionaryWithObject :[NSNumber numberWithBool :NO] forKey :...

Я сканирую свое периферийное устройство вот так:

NSDictionary *scanOptions = [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:NO] 
                                                            forKey:CBCentralManagerScanOptionAllowDuplicatesKey];
        // Scan for peripherals with given UUID
        [cm scanForPeripheralsWithServices:[NSArray arrayWithObject:HeliController.serviceUUID] options:scanOptions]

Нет проблем, я нахожу периферийное устройство и могу к нему подключиться. Как видите, я даю CBCentralManagerScanOptionAllowDuplicatesKeyс bool NO, чтобы не допускать более одного периферийного устройства, но иногда обратный вызов didDiscoverPeripheralсрабатывает дважды.

- (void) centralManager:(CBCentralManager *)central 
  didDiscoverPeripheral:(CBPeripheral *)peripheral 
  advertisementData:(NSDictionary *)advertisementData 
               RSSI:(NSNumber *)RSSI 
{        
if(!discovered){
    discovered = YES;
    NSLog(@"Discovered");

    [cm stopScan];

    [scanButton setTitle:@"Connect" forState:UIControlStateNormal];
}
else if(discovered){
    discovered = YES
    NSLog(@"Already discovered");
}
}

Иногда я получаю

Discovered
Already discovered

как вывод в моей консоли, и в большинстве случаев отображается только сообщение Discovered.

В моем периферийном делегате я сначала обнаруживаю службы, которые затем вызывают [peripheral discoverCharacteristics, и всегда происходит обратный вызов :

- (void) peripheral:(CBPeripheral *)peripheral didDiscoverCharacteristicsForService:(CBService *)service error:(NSError *)error{

NSLog(@"Did discover characteristic for service %@", [service.peripheral UUID]);

for(CBCharacteristic *c in [service characteristics]){
    // We never get here when peripheral is discovered twice
    if([[c UUID] isEqual:myCharacteristicUUID]){

        NSLog(@"Found characteristic");

        self.throttleCharacteristic = c;

    }
}

. Когда didDiscoverPeripheralвстречается дважды, serviceстановится nilв этом методе, хотя peripheralне является (UUID, имя по-прежнему правильное ).

Перезагрузка телефона или сброс настроек сети временно устраняет проблему.

Мне очень нужно это исправить! Спасибо

10
задан chwi 30 July 2012 в 06:40
поделиться