2016-12-12 15 views
1

Я использую cwac-cam2 для создания приложения для камеры. Я не могу установить режим вспышки во время работы окна камеры, и вспышка всегда включена. Я также не вижу кнопки для изменения flashmode. Я делаю что-то неправильно? Вот код:Как изменить настройки вспышки, когда камера открыта в cwac-cam2?

public class MainActivity extends AppCompatActivity 
    implements NavigationView.OnNavigationItemSelectedListener { 


private static final FlashMode[] FLASH_MODES={ 
     FlashMode.ALWAYS, 
     FlashMode.AUTO, 
     FlashMode.OFF 
}; 


private static final int REQUEST_PORTRAIT_RFC=1337; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    if (!Environment.MEDIA_MOUNTED 
      .equals(Environment.getExternalStorageState())) { 
     Toast 
       .makeText(this, "Cannot access external storage!", 
         Toast.LENGTH_LONG) 
       .show(); 
     finish(); 
    } 

    setContentView(R.layout.activity_main); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 

    fab.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

      capturePortraitFFC(); 

     } 

    }); 

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
      this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 
    drawer.setDrawerListener(toggle); 
    toggle.syncState(); 

    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
    navigationView.setNavigationItemSelectedListener(this); 
} 

@Override 
public void onBackPressed() { 
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    if (drawer.isDrawerOpen(GravityCompat.START)) { 
     drawer.closeDrawer(GravityCompat.START); 
    } else { 
     super.onBackPressed(); 
    } 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 

    //noinspection SimplifiableIfStatement 
    if (id == R.id.action_settings) { 
     return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 

@SuppressWarnings("StatementWithEmptyBody") 
@Override 
public boolean onNavigationItemSelected(MenuItem item) { 
    // Handle navigation view item clicks here. 
    int id = item.getItemId(); 

    if (id == R.id.nav_camera) { 
     // Handle the camera action 
    } else if (id == R.id.nav_gallery) { 

    } else if (id == R.id.nav_slideshow) { 

    } else if (id == R.id.nav_manage) { 

    } else if (id == R.id.nav_share) { 

    } else if (id == R.id.nav_send) { 

    } 

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    drawer.closeDrawer(GravityCompat.START); 
    return true; 
} 


private void capturePortraitFFC() { 

    Intent i; 


     i=new CameraActivity.IntentBuilder(this) 
       .skipConfirm() 
       .facing(Facing.BACK) 
       .facingExactMatch() 
       .to(new File(getExternalFilesDir(null), (new SimpleDateFormat("yyyyMMdd'-'HHmmss").format(new Date())).replaceAll(" ", "_") + ".jpg")) 
       .updateMediaStore() 
       .flashModes(FLASH_MODES) 
       .zoomStyle(ZoomStyle.SEEKBAR) 
       .debugSavePreviewFrame() 
       .debug() 
       .build(); 


    startActivityForResult(i, REQUEST_PORTRAIT_RFC); 

} 
} 

Буду признателен за любую помощь. Благодарю.

ответ

0

Я не в состоянии установить режимы вспышки во время работы окна камеры

Correct. Помимо значений, представленных при запуске операции (например, CameraActivity), вы не можете контролировать поведение этого действия, пока оно находится на переднем плане. Если это важно для вас, вам нужно будет использовать какую-то другую библиотеку или работать с API-интерфейсом камеры напрямую.

и вспышка на всегда

То есть то, что ваш код просит, имея ALWAYS в качестве режима первоочередной вспышки.

Я также не вижу кнопку для изменения flashmode

я не выполнил, что еще. Продолжайте следить за this issue.

+0

Спасибо за быстрый ответ. Я буду копаться и посмотреть, что я могу сделать. – SuperHaker